文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python可视化调色盘如何绘制

2023-07-02 09:31

关注

本篇内容主要讲解“Python可视化调色盘如何绘制”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python可视化调色盘如何绘制”吧!

导入模块并加载图片

那么按照惯例,第一步一般都是导入模块,可视化用到的模块是matplotlib模块,我们将图片中的颜色抽取出来之后会保存在颜色映射表中,所以要使用到colormap模块,同样也需要导入进来

import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport matplotlib.patches as patchesimport matplotlib.image as mpimgfrom PIL import Imagefrom matplotlib.offsetbox import OffsetImage, AnnotationBboximport cv2import extcolorsfrom colormap import rgb2hex

然后我们先来加载一下图片,代码如下:

input_name = 'test_1.png'img = plt.imread(input_name)plt.imshow(img)plt.axis('off')plt.show()

output:

Python可视化调色盘如何绘制

提取颜色并整合成表格

我们调用的是extcolors模块来从图片中提取颜色,输出的结果是RGB形式呈现出来的颜色,代码如下

colors_x = extcolors.extract_from_path(img_url, tolerance=12, limit = 12)colors_x

output:

([((3, 107, 144), 180316),
  ((17, 129, 140), 139930),
  ((89, 126, 118), 134080),
  ((125, 148, 154), 20636),
  ((63, 112, 126), 18728),
  ((207, 220, 226), 11037),
  ((255, 255, 255), 7496),
  ((28, 80, 117), 4972),
  ((166, 191, 198), 4327),
  ((60, 150, 140), 4197),
  ((90, 94, 59), 3313),
  ((56, 66, 39), 1669)],
 538200)

我们将上述的结果整合成一个DataFrame数据集,代码如下:

def color_to_df(input_color):    colors_pre_list = str(input_color).replace('([(', '').split(', (')[0:-1]    df_rgb = [i.split('), ')[0] + ')' for i in colors_pre_list]    df_percent = [i.split('), ')[1].replace(')', '') for i in colors_pre_list]    # 将RGB转换成十六进制的颜色    df_color_up = [rgb2hex(int(i.split(", ")[0].replace("(", "")),                           int(i.split(", ")[1]),                           int(i.split(", ")[2].replace(")", ""))) for i in df_rgb]    df = pd.DataFrame(zip(df_color_up, df_percent), columns=['c_code', 'occurence'])    return df

我们尝试调用上面我们自定义的函数,输出的结果至DataFrame数据集当中

df_color = color_to_df(colors_x)df_color

output:

Python可视化调色盘如何绘制

绘制图表

接下来便是绘制图表的阶段了,用到的是matplotlib模块,代码如下:

fig, ax = plt.subplots(figsize=(90,90),dpi=10)wedges, text = ax.pie(list_precent,                      labels= text_c,                      labeldistance= 1.05,                      colors = list_color,                      textprops={'fontsize': 120, 'color':'black'}                     )plt.setp(wedges, width=0.3)ax.set_aspect("equal")fig.set_facecolor('white')plt.show()

output:

Python可视化调色盘如何绘制

从出来的饼图中显示了每种不同颜色的占比,我们更进一步将原图放置在圆环当中,

imagebox = OffsetImage(img, zoom=2.3)ab = AnnotationBbox(imagebox, (0, 0))ax1.add_artist(ab)

output:

Python可视化调色盘如何绘制

最后制作一张调色盘,将原图中的各种不同颜色都罗列开来,代码如下:

## 调色盘x_posi, y_posi, y_posi2 = 160, -170, -170for c in list_color:    if list_color.index(c) <= 5:        y_posi += 180        rect = patches.Rectangle((x_posi, y_posi), 360, 160, facecolor = c)        ax2.add_patch(rect)        ax2.text(x = x_posi+400, y = y_posi+100, s = c, fontdict={'fontsize': 190})    else:        y_posi2 += 180        rect = patches.Rectangle((x_posi + 1000, y_posi2), 360, 160, facecolor = c)        ax2.add_artist(rect)        ax2.text(x = x_posi+1400, y = y_posi2+100, s = c, fontdict={'fontsize': 190})ax2.axis('off')fig.set_facecolor('white')plt.imshow(bg)plt.tight_layout()

output:

Python可视化调色盘如何绘制

实战环节

这一块儿是实战环节,我们将上述所有的代码封装成一个完整的函数:

def exact_color(input_image, resize, tolerance, zoom):    output_width = resize    img = Image.open(input_image)    if img.size[0] >= resize:        wpercent = (output_width/float(img.size[0]))        hsize = int((float(img.size[1])*float(wpercent)))        img = img.resize((output_width,hsize), Image.ANTIALIAS)        resize_name = 'resize_'+ input_image        img.save(resize_name)    else:        resize_name = input_image    fig.set_facecolor('white')    ax2.axis('off')    bg = plt.imread('bg.png')    plt.imshow(bg)    plt.tight_layout()    return plt.show()exact_color('test_2.png', 900, 12, 2.5)

output:

Python可视化调色盘如何绘制

到此,相信大家对“Python可视化调色盘如何绘制”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯