Python 可视化调色盘绘制

目录
  • 导入模块并加载图片
  • 绘制图表
  • 实战环节

在示例照片当中有着各种各样的颜色,我们将通过Python中的可视化模块以及opencv模块来识别出图片当中所有的颜色要素,并且将其添加到可视化图表的配色当中

导入模块并加载图片

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

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import matplotlib.image as mpimg

from PIL import Image
from matplotlib.offsetbox import OffsetImage, AnnotationBbox

import cv2
import extcolors
from colormap import rgb2hex

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

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

output:

提取颜色并整合成表格

我们调用的是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:

绘制图表

接下来便是绘制图表的阶段了,用到的是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:

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

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

output:

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

## 调色盘
x_posi, y_posi, y_posi2 = 160, -170, -170
for 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:

实战环节

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

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 可视化 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解利用python-highcharts库绘制交互式可视化图表

    目录 python-highcharts库的简单介绍 python-highcharts具体案例 总结 今天小编给大家推荐一个超强交互式可视化绘制工具-python-highcharts,熟悉HightCharts绘图软件的小伙伴对这个不会陌生,python-highcharts就是使用Python进行Highcharts项目绘制,简单的说就是实现Python和Javascript之间的简单转换层,话不多说,我们直接进行介绍,具体包括以下几个方面: python-highcharts库的简单介绍

  • 一文教会你用Python绘制动态可视化图表

    目录 前言 安装模块 可视化动态图 太阳图 指针图 桑基图 平行坐标图 总结 前言 对数据科学家来说,讲故事是一个至关重要的技能.为了表达我们的思想并且说服别人,我们需要有效的沟通.而漂漂亮亮的可视化是完成这一任务的绝佳工具. 本文将介绍5种非传统的可视化技术,可让你的数据故事更漂亮和更有效.这里将使用Python的Plotly图形库,让你可以毫不费力地生成动画图表和交互式图表. 安装模块 如果你还没安装 Plotly,只需在你的终端运行以下命令即可完成安装: pip install plotl

  • Python数据可视化之使用matplotlib绘制简单图表

    目录 一.绘制折线图 二.绘制柱形图或堆积图形 三.绘制条形图或堆积条形图 四.绘制堆积面积图 五.绘制直方图 六.绘制饼图或者圆环图 七.绘制散点图或气泡图 八.绘制箱形图 九.绘制雷达图 十.绘制误差棒图 总结 一.绘制折线图 使用plot()绘制折线图 常用的参数: x:表示x轴的数据 y:表示y轴的数据 fmt:表示快速设置条样式的格式字符串. label:表示应用于图例的标签文本. plot()会返回一个包含Line2D类对象(代表线条)的列表. plot()函数的语法格式: plot

  • Python绘制惊艳的可视化动图的示例代码

    今天小编给大家介绍一款可视化模块,使用它可以绘制出十分惊艳的动图效果,那么当然第一步我们首先是要安装一下该模块,通过pip命令行来安装: pip install ipyvizzu 牛刀小试 我们首先来简单地使用该模块来绘制一张动图,用Pandas导入数据集,代码如下: import pandas as pd from ipyvizzu import Chart, Data, Config data_frame = pd.read_csv("titanic.csv") 在导入数据集完毕之

  • Python可视化学习之seaborn绘制线型回归曲线

    目录 本文速览 1.绘图数据准备 2.seaborn.regplot regplot默认参数线型回归图 分别设置点和拟合线属性 置信区间(confidenceinterval)设置 拟合线延伸与坐标轴相交 拟合离散变量曲线 多项式回归(polynomialregression)拟合曲线 3.seaborn.lmplot 按变量分类拟合回归线 散点marker设置 散点调色盘 拟合线属性设置 绘制分面图 本文速览 1.绘图数据准备 依旧使用鸢尾花iris数据集,详细介绍见之前文章. #导入本帖要用

  • Python+pyecharts绘制交互式可视化图表

    目录 一.热力图 二.地理图表 2.1 地理坐标系 2.2 市区地图 2.3人口流动图 2.4 3D地图 2.5 3D地球 三.疫情数据可视化 四.空气质量数据可视化 五.外卖点分布数据可视化 六.总结 本篇我们来了解一个新的可视化模块pyecharts,由于爬虫敏感问题,博主对数据已经提取供大家使用,本篇文章仅介绍数据可视化. 一.热力图 案例:绘制2021部分城市的GDP热力图(比如上海,北京,深圳,重庆,长沙的2021年总GDP),data为一个列表,每个城市数据用元祖表示,比如:(‘上海

  • Python 数据可视化神器Pyecharts绘制图像练习

    目录 前言: 1.Hive数据库查询sql 2.Python代码实现—柱状图 3.Python代码实现—饼状图 4.Python代码实现—箱型图 5.Python代码实现—折线图 6.Python代码实现—雷达图 7.Python代码实现—散点图 前言: Echarts 是百度开源的一款数据可视化 JS 工具,数据可视化类型十分丰富,但是得通过导入 js 库在 Java Web 项目上运行. 作为工作中常用 Python 的选手,不能不知道这款数据可视化插件的强大.那么,能否在 Python 中

  • Python可视化学习之seaborn绘制矩阵图详解

    目录 本文内容速览 1.绘图数据准备 2.seaborn.pairplot 加上分类变量 修改调色盘 x,y轴方向选取相同子集 x,y轴方向选取不同子集 非对角线散点图加趋势线 对角线上的四个图绘制方式 只显示网格下三角图形 图形外观设置 3.seaborn.PairGrid(更灵活的绘制矩阵图) 每个子图绘制同类型的图 对角线和非对角线分别绘制不同类型图 对角线上方.对角线.对角线下方分别绘制不同类型图 其它一些参数修改 本文内容速览 1.绘图数据准备 还是使用鸢尾花iris数据集 #导入本帖

  • 如何利用 Python 绘制动态可视化图表

    目录 一.安装相关的模块 二.gif和matplotlib的结合 三.gif和plotly的结合 四.matplotlib多子图动态可视化 五.动态气泡图 一.安装相关的模块 首先第一步的话我们需要安装相关的模块,通过pip命令来安装 pip install gif 另外由于gif模块之后会被当做是装饰器放在绘制可视化图表的函数上,主要我们依赖的还是Python当中绘制可视化图表的matplotlib.plotly.以及altair这些模块,因此我们还需要下面这几个库 pip install "

  • Python 可视化调色盘绘制

    目录 导入模块并加载图片 绘制图表 实战环节 在示例照片当中有着各种各样的颜色,我们将通过Python中的可视化模块以及opencv模块来识别出图片当中所有的颜色要素,并且将其添加到可视化图表的配色当中 导入模块并加载图片 那么按照惯例,第一步一般都是导入模块,可视化用到的模块是matplotlib模块,我们将图片中的颜色抽取出来之后会保存在颜色映射表中,所以要使用到colormap模块,同样也需要导入进来 import numpy as np import pandas as pd impor

  • Python可视化神器pyecharts绘制柱状图

    目录 主题介绍 图表参数 主题详解 柱状图模板系列 海量数据柱状图动画展示 收入支出柱状图(适用于记账) 三维数据叠加 柱状图与折线图多维展示(同屏展示) 单列多维数据展示 3D柱状图 主题介绍 pyecharts里面有很多的主题可以供我们选择,我们可以根据自己的需要完成主题的配置,这样就告别了软件的限制,可以随意的发挥自己的艺术细胞了. 图表参数 ''' def add_yaxis( # 系列名称,用于 tooltip 的显示,legend 的图例筛选. series_name: str, #

  • Python可视化神器pyecharts绘制漏斗图

    目录 漏斗图 漏斗图系列模板 尖顶型漏斗图 锥子型漏斗 三角形漏斗 连接型漏斗 漏斗图 漏斗图是由Light等在1984年提出,一般以单个研究的效应量为横坐标,样本含量为纵坐标做的散点图.效应量可以为RR.OR和死亡比或者其对数值等.理论上讲,被纳入Meta分析的各独立研究效应的点估计,在平面坐标系中的集合应为一个倒置的漏斗形,因此称为漏斗图. 样本量小,研究精度低,分布在漏斗图的底部,向周围分散: 样本量大,研究精度高,分布在漏斗图的顶部,向中间集中. 漏斗图法的优点是: 简单易行,只需要被纳

  • Python可视化神器pyecharts绘制雷达图

    目录 雷达图 雷达图模板系列 基础雷达图 单例雷达图 空气质量模板 颜色雷达图 雷达图 雷达图是以从同一点开始的轴上表示的三个或更多个定量变量的二维图表的形式显示多变量数据的图形方法.轴的相对位置和角度通常是无信息的. 雷达图也称为网络图,蜘蛛图,星图,蜘蛛网图,不规则多边形,极坐标图或Kiviat图.它相当于​ ​平行坐标图​​,轴径向排列. 平行坐标图: 平行坐标图是一种通常的可视化方法, 用于对 高维几何 和 多元数据 的可视化. 为了表示在高维空间的一个点集,在N条平行的线的背景下,(一

  • Python可视化神器pyecharts绘制桑基图

    目录 桑基图 桑基图系列模板 第一个桑基图 复杂桑基图 桑基图 桑基图(Sankey diagram),即桑基能量分流图,也叫桑基能量平衡图.它是一种特定类型的流程图,图中延伸的分支的宽度对应数据流量的大小,通常应用于​​能源​​​.材料成分.​​金融​​​等数据的可视化分析.因1898年Matthew Henry Phineas Riall Sankey绘制的“​​蒸汽机​​的能源效率图”而闻名,此后便以其名字命名为“桑基图”. 桑基图最明显的特征就是,始末端的分支宽度总和相等,即所有主支宽度

  • Python可视化神器pyecharts绘制地理图表

    目录 地理图表 地理图表之热力图系列模板 人口流动趋势图(中国) 中国城市分段热力图 重庆省份微塑料分布热力图 中国城市连续热力图 中国城市热力动态图 中国城市散点热力图 地理图表 什么是地理图表?地理图表有什么作用?地理图表主要应用在那些领域? 其实这些问题看看下面的实例图形就已不攻自破了,地理图表一看首先就是地图,然后在地理图表里面展示数据,比如说热力图,趋势流动图,人口密集分布图,反正地理坐标相关的就可以运用在这个里面,其次图形支持全球地图,全球国家,中国,中国的所有的省份的地图,反正应有

  • Python可视化神器pyecharts绘制水球图

    目录 水球图 双水球图显示 正方形水球图 圆球水球图 数据精度水球图 炫酷水球超级好看 水球图 水球图首先是动态的效果,像水流一样波动,所以看起来比较的舒服,一般用于业务里面的完成率,其实和之前的仪表盘有点类似,但是我个人绝对水球图更加的好,因为看起来比较的炫酷. from pyecharts import options as opts from pyecharts.charts import Liquid from pyecharts.globals import SymbolType c

  • Python可视化神器pyecharts绘制折线图详情

    目录 折线图介绍 折线图模板系列 双折线图(气温最高最低温度趋势显示) 面积折线图(紧贴Y轴) 简单折线图(无动态和数据标签) 连接空白数据折线图 对数轴折线图示例 折线图堆叠(适合多个折线图展示) 二维曲线折线图(两个数据) 多维度折线图(颜色对比) 阶梯折线图 js高渲染折线图 折线图介绍 折线图和柱状图一样是我们日常可视化最多的一个图例,当然它的优势和适用场景相信大家肯定不陌生,要想快速的得出趋势,抓住趋势二字,就会很快的想到要用折线图来表示了.折线图是通过直线将这些点按照某种顺序连接起来

  • Python可视化神器pyecharts绘制仪表盘

    目录 仪表盘 仪表盘模板系列 假期剩余额度 任务完成率 多色仪表盘 仪表盘内部字体添加 仪表盘 仪表盘的效果我只能说炫酷而已,如果想要运用在实际的场景中,我其实也不清楚那个场景比较适合,但是pyecharts毕竟是炫酷可视化的利器,炫酷自然也就有它了. 小汽车仪表盘是长这样的,下面我们来看看pyecharts的仪表盘是怎么样子的. 仪表盘模板系列 假期剩余额度 import pyecharts.options as opts from pyecharts.charts import Gauge

  • Python可视化学习之seaborn调色盘

    目录 1.color_palette()函数 2.seaborn可用调色盘 choose_colorbrewer_palette函数 Qualitativecolorpalettes Sequentialcolorpalettes Divergingcolorpalettes 1.color_palette() 函数 该函数是seaborn选取颜色关键函数 color_palette() will accept the name of any seaborn palette or matplot

随机推荐