煤矸石空心砖

联系我们Contact

企业名称:桐城市南口新型建材有限公司

联系人:崔经理

电话:0556-6568069

手机:18156911555

邮箱:303927413@qq.com

地址:桐城市龙腾街道高桥村

网址:   www.nkxxjc.com 



您的当前位置: 首 页 > 你知道matplotlib的pyplot包有哪些函数 > 使用 Python Matplotlib 自定义颜色图

使用 Python Matplotlib 自定义颜色图

当前位置:主页 > 学无止境 > 编程语言 > WEB前端 编程语言 网络 算法 操作系统 数据库 使用 Python Matplotlib 自定义颜色图 作者:迹忆客 最近更新:2023/03/17 浏览次数:

颜色图是显示图形中连续值和离散值之间变化的最有效方法之一。本文将讨论在 Python 中使用 Matplotlib 创建自定义颜色图。

在 Python 中使用 Matplotlib 创建自定义颜色图

matplotlib 库提供各种内置颜色图。但是,假设你想要操作颜色图或创建自定义颜色图。在这种情况下,你可以使用 matplotlib 库中定义的 ListedColormap 类或 LinearSegmentedColormap 类来完成。

在创建自定义颜色图之前,让我们首先讨论如何访问 Matplotlib 颜色图中的值以了解颜色图的实现。它将使我们能够创建自己选择的自定义颜色图。

在 Python 中使用 Matplotlib 的 get_cmap() 方法访问颜色图及其值

Matplotlib 模块中定义了各种颜色图。每个颜色图都被分配了唯一的名称。我们可以使用 matplotlib 库的 cm 模块中的 get_cmap() 方法访问颜色图。

get_cmap() 方法的语法如下。

matplotlib.cm.get_cmap(name=None, lut = None) import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from matplotlib.colors import ListedColormap, LinearSegmentedColormap cm.get_cmap('viridis', 8)

输出:

matplotlib 颜色图 - viridis

以上代码已经在 J​​upyter Notebook 的交互式 shell 中运行。如果你尝试在不同的 IDE 中执行它,你可能会或可能不会将上述图像作为输出。

get_cmap() 方法返回的颜色图是可调用的。当我们将一个介于 0 和 1 之间的值传递给颜色图对象时,它会返回一个 RGBA 值。

你可以在此示例中观察到这一点。

import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from matplotlib.colors import ListedColormap, LinearSegmentedColormap viridis=cm.get_cmap('viridis', 8) print(viridis(0.56))

输出:

(0.122312, 0.633153, 0.530398, 1.0) 在 Python 中使用 ListedColormap 对象的 colors 属性创建自定义列出的颜色图

要创建自定义 ListedColormap,让我们首先看看颜色是如何存储在 ListedColormap 中的。为此,我们可以使用 ListedColormap 对象的 colors 属性。

例如,viridis 是一个 ListedColormap。我们可以使用 viridis 颜色图的颜色属性来观察颜色值,如下例所示。

import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from matplotlib.colors import ListedColormap, LinearSegmentedColormap viridis=cm.get_cmap('viridis', 8) print(viridis.colors)

输出:

[[0.267004 0.004874 0.329415 1. ] [0.275191 0.194905 0.496005 1. ] [0.212395 0.359683 0.55171 1. ] [0.153364 0.497 0.557724 1. ] [0.122312 0.633153 0.530398 1. ] [0.288921 0.758394 0.428426 1. ] [0.626579 0.854645 0.223353 1. ] [0.993248 0.906157 0.143936 1. ]]

在这里,你可以看到颜色存储在 Nx4 数组中。你还可以通过使用所需的序列作为输入参数调用颜色图名称来访问 ListedColormap 的指定行数,如下所示。

import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from matplotlib.colors import ListedColormap, LinearSegmentedColormap viridis=cm.get_cmap('viridis', 8) print(viridis(range(0,8)))

输出:

[[0.267004 0.004874 0.329415 1. ] [0.275191 0.194905 0.496005 1. ] [0.212395 0.359683 0.55171 1. ] [0.153364 0.497 0.557724 1. ] [0.122312 0.633153 0.530398 1. ] [0.288921 0.758394 0.428426 1. ] [0.626579 0.854645 0.223353 1. ] [0.993248 0.906157 0.143936 1. ]]

如你所见,ListedColormap 使用列表表示。因此,要在 Python 中创建自定义 ListedColormap,我们必须创建一个表示颜色图颜色的列表。

在 Python 中使用颜色名称创建自定义列出的颜色图

我们可以使用 ListedColormap() 方法创建自定义列表颜色图。ListedColormap() 方法的语法如下。

matplotlib.colors.ListedColormap(colors, name='from_list', N=None)

要使用 ListedColormap() 方法和颜色列表创建自定义列出的颜色图,你可以将四种颜色的名称传递给 ListedColormap() 方法。它将返回一个 Colormap 对象。

之后,你可以使用 Colormap 对象绘制数据,如下所示。

import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from matplotlib.colors import ListedColormap, LinearSegmentedColormap import matplotlib.colors xdata=[1,2,3,4,5,6,7,8,9,10,11,12] ydata=[x*x for x in xdata] norm=plt.Normalize(1,150) cmap = ListedColormap(["darkorange", "gold", "lawngreen", "lightseagreen"]) c=np.linspace(0,150,12) plt.scatter(xdata,ydata,c=c, cmap=cmap, norm=norm) plt.colorbar() plt.show()

输出:

在 Python 中使用颜色名称创建自定义列出的颜色图

在 Python 中使用 RGBA 值创建自定义列出的颜色图

你可以使用具有 RGBA 值的数组来创建颜色图,而不是使用颜色名称,如下所示。

import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from matplotlib.colors import ListedColormap, LinearSegmentedColormap import matplotlib.colors xdata=[1,2,3,4,5,6,7,8,9,10,11,12] ydata=[x*x for x in xdata] norm=plt.Normalize(1,150) colorarray=[[.57647055, 0.4116, 0.27107143 ,1 ],[0, 0.4116, 0.27107143 ,1 ],[.57647055, 0, 0.27107143 ,1 ]] cmap = ListedColormap(colorarray) c=np.linspace(0,150,12) plt.scatter(xdata,ydata,c=c, cmap=cmap, norm=norm) plt.colorbar() plt.show()

输出:

在 Python 中使用 RGBA 值创建自定义列出的颜色图

在 Python 中如何创建自定义线性分段颜色图

在创建自定义线性分段颜色图之前,让我们观察颜色值如何存储在线性分段颜色图中。

线性分段颜色图没有 color 属性。但是,我们可以调用带有所需序列的颜色图名称作为输入参数来观察颜色值。

例如,我们可以如下查看 copper 颜色图的颜色值。

import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from matplotlib.colors import ListedColormap, LinearSegmentedColormap copper = cm.get_cmap('copper', 8) print(copper(range(0,8)))

输出:

[[0. 0. 0. 1. ] [0.17647055 0.1116 0.07107143 1. ] [0.35294109 0.2232 0.14214286 1. ] [0.52941164 0.3348 0.21321429 1. ] [0.70588219 0.4464 0.28428571 1. ] [0.88235273 0.558 0.35535714 1. ] [1. 0.6696 0.42642857 1. ] [1. 0.7812 0.4975 1. ]] Python Matplotlib 中的 cdict 是什么

LinearSegmentedColormap 类使用在其间插入 RGBA 值的锚点来定义线性分段颜色图。

你可以按如下方式创建颜色字典。

cdict = {'blue': [[0.0, 0.0, 0.0], [0.5, 1.0, 1.0], [1.0, 1.0, 1.0]], 'red': [[0.0, 0.0, 0.0], [0.25, 0.0, 0.0], [0.75, 1.0, 1.0], [1.0, 1.0, 1.0]], 'green': [[0.0, 0.0, 0.0], [0.5, 0.0, 0.0], [1.0, 1.0, 1.0]]} 在 Python 中使用锚点创建自定义线性分段颜色图

创建 cdict 后,你可以使用 LinearSegmentedColormap() 方法创建线性分段颜色图。LinearSegmentedColormap() 方法的语法如下。

matplotlib.colors.LinearSegmentedColormap(name, segmentdata, N=256, gamma=1.0)

如下所示,我们可以使用 LinearSegmentedColormap() 方法创建线性分段颜色图。

import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from matplotlib.colors import ListedColormap, LinearSegmentedColormap import matplotlib.colors xdata=[1,2,3,4,5,6,7,8,9,10,11,12] ydata=[x*x for x in xdata] norm=plt.Normalize(1,150) cdict = {'blue': [[0.0, 0.0, 0.0], [0.5, 1.0, 1.0], [1.0, 1.0, 1.0]], 'red': [[0.0, 0.0, 0.0], [0.25, 0.0, 0.0], [0.75, 1.0, 1.0], [1.0, 1.0, 1.0]], 'green': [[0.0, 0.0, 0.0], [0.5, 0.0, 0.0], [1.0, 1.0, 1.0]]} newcmp = LinearSegmentedColormap('testCmap', segmentdata=cdict, N=256) c=np.linspace(0,80,12) plt.scatter(xdata,ydata,c=c, cmap=newcmp, norm=norm) plt.colorbar() plt.show()

输出:

在 Python 中使用锚点创建自定义线性分段颜色图

在 Python 中使用颜色名称创建自定义线性分段颜色图

除了使用 cdict,我们还可以使用颜色列表来创建自定义颜色图。为此,我们可以使用 LinearSegmentedColormap.from_list() 方法。from_list() 方法的语法如下。

from_list(name, colors, N=256, gamma=1.0)

这里,参数 colors 将颜色列表作为输入参数。所有其他参数都类似于 LinearSegmentedColormap() 方法。

你可以使用 from_list() 方法创建线性分段颜色图,如下所示。

import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from matplotlib.colors import ListedColormap, LinearSegmentedColormap import matplotlib.colors xdata=[1,2,3,4,5,6,7,8,9,10,11,12] ydata=[x*x for x in xdata] norm=plt.Normalize(1,150) colorlist=["darkorange", "gold", "lawngreen", "lightseagreen"] newcmp = LinearSegmentedColormap.from_list('testCmap', colors=colorlist, N=256) c=np.linspace(0,80,12) plt.scatter(xdata,ydata,c=c, cmap=newcmp, norm=norm) plt.colorbar() plt.show()

输出:

在 Python 中使用颜色名称创建自定义线性分段颜色图

结论

本文讨论了在 Python 中使用 Matplotlib 创建自定义颜色图的不同方法。我们创建了列出的颜色图和线性分段颜色图,并使用颜色图绘制了一些数据。

上一篇:在 Matplotlib 中为散点图设置颜色

下一篇:Matplotlib 中如何同时绘制两个直方图

相关文章 Matplotlib 中的 twinx 和 twiny

发布时间:2023/03/18 浏览次数:81 分类:编程语言

本教程介绍了如何在 Matplotlib 中使用 Python 中的 matplotlib.axes.Axes.twinx()和 matplotlib.axes.Axes.twiny()创建具有共同 X 轴或 Y 轴的双轴。

如何在 Matplotlib 中以灰度显示图像

发布时间:2023/03/18 浏览次数:169 分类:编程语言

在本文中,我们将学习如何使用 Matplotlib 显示灰度图像。要使用 Matplotlib 显示灰度图像,我们使用 matplotlib.pyplot.imshow(),参数 cmap 设置为'gray',vmin 设置为 0,vmax 设置为 255。

如何用 Matplotlib 显示图片

发布时间:2023/03/18 浏览次数:70 分类:编程语言

你可以使用 matplotlib.pyplot.imshow()方法来使用 Matplotlib 显示图片。

如何保存与 Matplotlib 中显示的图形相同的图

发布时间:2023/03/18 浏览次数:149 分类:编程语言

本篇文章演示了如何保存与 Matplotlib 中显示的图相同的图。

Python 中将 NumPy 数组转换为 PIL 图像

发布时间:2023/03/18 浏览次数:59 分类:编程语言

本教程解释了我们如何使用 PIL 包中的 Image.fromarray()将 NumPy 数组转换为 PIL 图像。

Matplotlib 中的 Imread

发布时间:2023/03/18 浏览次数:199 分类:编程语言

文章解释了我们如何使用 Matplotlib 包中的 imread()方法将一个文件中的图像读到一个数组中。

Matplotlib 生成 CDF 图

发布时间:2023/03/18 浏览次数:167 分类:编程语言

本教程介绍了我们如何使用 Python 中的 Matplotlib 生成 CDF 图。

Matplotlib 绘制箱线图

发布时间:2023/03/18 浏览次数:188 分类:编程语言

本教程解释了我们如何使用 Matplotlib 中的 matplotlib.pyplot.boxplot() 函数创建一个箱线图。

Matplotlib 绘制平滑曲线

发布时间:2023/03/18 浏览次数:167 分类:编程语言

本教程解释了如何使用 scipy 和 matplotlib 包中的模块从给定坐标绘制一条平滑曲线。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

本文网址:

关键词:你知道matplotlib的pyplot包有哪些函数

相关新闻: