当图形设计师遇到Matplotlib时–使用Matplotlib在Python中创建颜色图
如今,人们开始开发比Matplotlib更简单,更现代的样式的新软件包,例如Seaborn,Plotly,甚至Pandas也使用Matplotlib的API包装器。但是,我认为Matplotlib仍然在许多程序员的心中。
如果您需要学习使用Matplotlib的入门知识,可以查看此链接,
Matplotlib进行数据可视化-绝对是初学者第一部分
Matplotlib中的颜色图
在可视化3D图时,我们需要颜色图不同并在3D参数中做出一些直觉。从科学上讲,人脑会根据所看到的不同颜色来感知各种直觉。
Matplotlib提供了一些可以使用的不错的颜色图,例如顺序颜色图,发散颜色图,循环颜色图和定性颜色图。出于实际目的,我没有更详细地解释它们之间的差异。如果我向您展示Matplotlib中每种分类颜色图的示例,那将很简单。
以下是一些(并非全部)顺序色图的示例。
Matplotlib提供的顺序色图
Matplotlib提供的顺序色图。
Matplotlib将为您提供viridis作为默认色彩图。
然后,接下来是Matplotlib中的Diverging,Cyclic,Qualitative和Misc颜色图的示例。
图片发布
图片发布
图片发布
图片发布
Matplotlib中的颜色图。
你自己的色彩图
您是否对所有提供的颜色图不感兴趣?还是您需要其他精美的色彩图?如果是,则需要阅读本文直到最后。我将指导您自定义和创建自己的颜色图。
但是在自定义它之前,我将向您展示一个使用颜色图的示例。我使用了“ RdYlBu_r ”颜色图来可视化我的数据。
创建自己的色图matplotlib
Matplotlib中的RdYlBu_r颜色图示例
让我们修改您自己的颜色图。
首先,我们需要使用此代码创建将可视化的模拟数据
#导入一些库/模块
将numpy导入为np
导入matplotlib.pyplot作为plt #创建模拟数据
数据= np.random.random([100,100])* 10
数据变量是一个数组,其中包含100 x 100个从0到10的随机数。您可以通过编写此代码进行检查。
创建自己的颜色图
模拟数据可视化
之后,我们将使用下面的简单代码显示带有默认颜色图的模拟数据。
plt.figure(figsize =(7,6))plt.pcolormesh(数据)
plt.colorbar()
该代码将向您显示这样的图形。
创建自己的色图matplotlib
使用默认颜色图可视化模拟数据的Colormesh
如前所述,如果您未定义所使用的颜色图,则将获得默认的颜色图,名为“ viridis ”。
接下来,我将使用以下代码将色图从“ viridis ”更改为“ inferno”色图-
plt.pcolormesh(data,cmap ='inferno')
您将得到像这样的结果.viridis
创建和修改自己的颜色图matplotlib
Colormesh通过“地狱”颜色图可视化模拟数据
修改色彩图
现在,要修改颜色图,您需要在Matplotlib中导入以下这些子库。
从matplotlib导入cm
从matplotlib.colors导入ListedColormap,LinearSegmentedColormap
要修改颜色图中的颜色类别数量,可以使用以下代码
new_inferno = cm.get_cmap('inferno',5)#使用new_inferno颜色图进行可视化
plt.pcolormesh(数据,cmap = new_inferno)
plt.colorbar()
并会得到这样的结果
在matplotlib中修改和创建自己的颜色图
仅有5种颜色的改良地狱。
接下来是修改颜色图中的范围颜色。我将在“ hsv”色彩图中为您提供示例。您需要使用此图了解颜色范围。
图片发布
如果我们只想使用绿色(约0.3)到蓝色(0.7),则可以使用以下代码。
#修改256色类的hsv
hsv_modified = cm.get_cmap('hsv',256)#创建范围为0.3(绿色)至0.7(蓝色)的新hsv颜色图。
newcmp = ListedColormap(hsv_modified(np.linspace(0.3,0.7,256)))#显示图
plt.figure(figsize =(7,6))
plt.pcolormesh(数据,cmap = newcmp)
plt.colorbar()
它会给你这样的身材
在matplotlib中修改和创建颜色图
修改“ hsv”颜色图的范围颜色
创建自己的色彩图
要创建自己的颜色图,至少有两种方法。首先,您可以在Matplotlib中组合两个顺序色图。其次,您可以选择并组合自己喜欢的RGB颜色以创建颜色图。
我们将为您演示结合两个顺序色图以创建新色图的演示。我们要结合“橙色”和“蓝色”。
在matplotlib中组合颜色图
结合蓝色和橙色色彩图创建一个新的
您可以仔细阅读此代码。
#定义顶部和底部颜色图
top = cm.get_cmap('Oranges_r',128)#r表示反转版本
bottom = cm.get_cmap('Blues',128)#结合全部
newcolors = np.vstack((top(np.linspace(0,1,128)),
bottom(np.linspace(0,1,128))))#创建一个名称为OrangeBlue的新颜色图
orange_blue = ListedColormap(newcolors,name ='OrangeBlue')
如果使用“ OrangeBlue”颜色图可视化模拟数据,则将得到一个这样的图形。
在matplotlib中创建和修改自己的颜色图
接下来是根据您喜欢的两种不同颜色创建一个颜色图。在这种情况下,我将尝试用黄色和红色创建它,如下图所示
在matplotlib中组合颜色图
首先,您需要创建黄色的颜色图
#创建黄色颜色图N = 256黄色= np.ones((N,4))yellow [:
黄色[:,1] = np.linspace(232/256,1,N)#G = 232
yellow [:
和红色色图
红色= np.ones((N,4))红色[:,0] = np.linspace(255/256,1,N)
红色[:,1] = np.linspace(0/256,1,N)
红色[:,2] = np.linspace(65/256,1,N)red_cmp = ListedColormap(红色)
下图显示了您创建的黄色和红色颜色图的可视化
图片发布
图片发布
之后,您可以使用以前的方法将其合并。
newcolors2 = np.vstack((yellow_cmp(np.linspace(0,1,128)),
red_cmp(np.linspace(1,0,128))))double = ListedColormap(newcolors2,name ='double')plt.figure(figsize =(7,6 ))plt.pcolormesh(data,cmap = double)
plt.colorbar()
你会得到一个这样的数字
在matplotlib中创建和修改自己的颜色图
你自己的色彩图 ??
您还可以使用此代码调整颜色图的方向,范围和填充距离。
plt.figure(figsize =(6,7))plt.pcolormesh(data,cmap = double)
plt.colorbar(方向='水平',标签='我最喜欢的色彩图',扩展='两者',填充= 0.1)
您将看到这样的身影
在matplotlib中创建和修改自己的颜色图
修改后的色彩图
题库