如何在 Matplotlib 中自定义绘图的颜色和色彩图

machine learningserver side programmingprogrammingmatplotlib更新于 2025/5/21 7:22:17

要自定义绘图的颜色和色彩图,我们可以使用颜色库中的 colormap 属性。我们可以创建两种类型的色彩图:(a) 离散色彩图和 (b) 连续色彩图。

我们将首先了解如何创建离散色彩图,然后创建连续色彩图。

在示例中,我们将使用 ‘iris’ 数据集创建三个绘图,其中第一个绘图使用默认色彩图,另外两个绘图使用 RGB 色彩图来创建混合色彩绘图。但是,我们可以创建与集群数量一样多的颜色图。

示例

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from matplotlib.colors import LinearSegmentedColormap

#读取鸢尾花数据集
iris = pd.read_csv('iris_dataset.csv', delimiter=',')
iris['species'] = iris['species'].map({"setosa" : 0, "versicolor" :1, "virginica" : 2})

#定义图形及其布局
fig, axs = plt.subplots(1,3, figsize=(9,6))
fig.subplots_adjust(left=0.0, bottom=0.05, right=0.9, top=0.95, wspace=0.6)

#绘制图形的函数
def plot_graph(axes, cm, cbaxs):
im =axes.scatter(iris.petal_length, iris.petal_width, s=10*iris.petal_length*iris.petal_width, c=iris.species, cmap = cm)
caxs = plt.axes(cbaxs)
fig.colorbar(im,caxs,ticks=range(3),label='clusetr #')

#绘制鸢尾花数据集簇,颜色从颜色图中选择
cbaxs = [0.24, 0.05, 0.03, 0.85] #left,bottom,width和高度
plot_graph(axs[0], plt.cm.get_cmap('coolwarm', 3), cbaxs)

#使用自定义颜色 RGB 绘制鸢尾花数据集
colors = [(1, 0, 0), (0, 1, 0), (0, 0, 1)]
cm = LinearSegmentedColormap.from_list('custom_RGB_cmap', colors,N=3)

#使用自定义混合颜色图绘制鸢尾花数据集簇
cbaxs = [0.58, 0.05, 0.03, 0.85]
plot_graph(axs[1], cm, cbaxs)
colors = [(1, 0.5, 0), (0.25, 0.5, 0.25), (0, 0.5, 1)]
cm = LinearSegmentedColormap.from_list('dummy', colors, N=3)
cbaxs = [0.95, 0.05, 0.03, 0.85]
plot_graph(axs[2], cm, cbaxs)

#显示图表
plt.show()

输出


相关文章