Matplotlib Cheatsheets色彩系统详解:从基础到高级配色方案

Matplotlib Cheatsheets色彩系统详解:从基础到高级配色方案

【免费下载链接】cheatsheets Official Matplotlib cheat sheets 【免费下载链接】cheatsheets 项目地址: https://gitcode.com/gh_mirrors/che/cheatsheets

你是否还在为数据可视化中的色彩搭配而烦恼?是否想让图表既专业又具有视觉冲击力?本文将通过Matplotlib Cheatsheets项目的实战案例,从基础色彩表示到高级配色方案,帮助你全面掌握数据可视化的色彩运用技巧。读完本文,你将能够:掌握5种色彩定义方法、学会选择适合场景的配色方案、解决色彩对比度和可读性问题、制作专业的渐变色图表。

色彩基础表示方法

Matplotlib支持多种色彩表示方式,满足不同场景的需求。在scripts/colors.py中展示了最常用的几种表示方法:

  • 原始颜色字符:如'b'(蓝色)、'g'(绿色)、'r'(红色)等,共8种基础颜色
  • RGBA元组:通过红、绿、蓝、透明度四个0-1之间的数值定义颜色,如(1, 0, 0, 0.5)表示半透明红色
  • 十六进制字符串:以#开头的6位或8位字符串,如"#FF0000BB"表示带透明度的红色
  • 颜色周期:使用"C0"到"C9"表示10种预定义的循环颜色
  • 灰度值:0到1之间的字符串,如"0.5"表示中灰色
  • 颜色名称:如"DarkRed"、"Firebrick"等CSS颜色名称

以下是一个综合示例,展示不同表示方法的应用:

# 多种色彩表示方法示例(源自colors.py)
palettes = {
    'raw': ['b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'],
    'rgba': [(1, 0, 0), (1, 0, 0, 0.75), (1, 0, 0, 0.50), (1, 0, 0, 0.25)],
    'HexRGBA': ["#FF0000", "#FF0000BB", "#FF000088", "#FF000044"],
    'cycle': ["C%d" % i for i in range(10)],
    'grey': ["%1.1f" % (i/10) for i in range(11)],
    'name': ["DarkRed", "Firebrick", "Crimson", "IndianRed", "Salmon"]
}

预定义颜色名称与选择

Matplotlib提供了丰富的预定义颜色名称,包括CSS4颜色和X11颜色。在scripts/colornames.py中,展示了如何获取并可视化所有可用的颜色名称。通过将颜色按色相、饱和度和明度排序,可以更系统地选择颜色。

# 颜色名称排序与可视化(源自colornames.py)
colors = dict(mpl.colors.BASE_COLORS, **mpl.colors.CSS4_COLORS)
by_hsv = sorted((tuple(mpl.colors.rgb_to_hsv(mpl.colors.to_rgba(color)[:3])), name)
                for name, color in colors.items())
sorted_names = [name for hsv, name in by_hsv]

常用的颜色名称分类包括:

  • 红色系:DarkRed, Firebrick, Crimson, IndianRed, Salmon
  • 蓝色系:Navy, DarkBlue, MediumBlue, RoyalBlue, SteelBlue
  • 绿色系:DarkGreen, ForestGreen, SeaGreen, MediumSeaGreen, LimeGreen

色彩映射表(Colormaps)详解

色彩映射表(Colormap)是一系列渐变色的集合,用于表示数据的连续变化。scripts/colormaps.py中定义了Matplotlib支持的所有内置色彩映射表,主要分为以下几类:

顺序型色彩映射表

从低到高使用单一色调的渐变,适合表示有顺序的数据。如:

  • viridis:从蓝到黄的渐变,是Matplotlib的默认色彩映射表
  • plasma:从紫到黄的渐变
  • inferno:从黑到黄的渐变
  • magma:从黑到红的渐变
  • cividis:为色盲友好设计的蓝到黄渐变

发散型色彩映射表

从中间值向两端发散为不同色调,适合表示有中心参考值的数据。如:

  • PRGn:从粉到绿的渐变
  • PiYG:从粉到黄到绿的渐变
  • RdYlGn:从红到黄到绿的渐变
  • coolwarm:从蓝到红的渐变

定性型色彩映射表

使用多种不同的色调,没有内在顺序,适合表示分类数据。如:

  • tab10:10种不同颜色的分类色彩映射表
  • tab20:20种不同颜色的分类色彩映射表
  • Pastel1/2:柔和的分类色彩映射表
  • Set1/2/3:对比度较高的分类色彩映射表

特殊用途色彩映射表

针对特定场景设计的色彩映射表。如:

  • Greys:灰度渐变
  • hot:热图色彩映射表
  • bone:X光图像风格的色彩映射表
  • terrain:地形高度图色彩映射表

以下是色彩映射表的使用示例:

# 色彩映射表使用示例(源自colormaps.py)
cmaps = ('viridis', 'plasma', 'inferno', 'magma', 'cividis',
         'PRGn', 'PiYG', 'RdYlGn', 'coolwarm',
         'tab10', 'tab20', 'Pastel1', 'Set1',
         'Greys', 'Reds', 'Oranges', 'Blues', 'Greens')

for name in cmaps:
    Z = np.linspace(0, 1, 256).reshape(1, 256)
    ax.imshow(Z, extent=[xmin, xmax, ymin, ymax], cmap=name)

色彩应用实战技巧

色彩范围控制

在可视化中,合理控制色彩范围可以突出数据的分布特征。scripts/tip-color-range.py展示了如何通过设置vmin和vmax参数来控制色彩的显示范围。

# 色彩范围控制示例(源自tip-color-range.py)
np.random.seed(1)
X = np.random.randn(1000, 4)
cmap = plt.get_cmap("Oranges")
colors = [cmap(i) for i in [.1, .3, .5, .7]]  # 使用色彩映射表生成特定范围的颜色
ax.hist(X, 2, density=True, histtype='bar', color=colors)

颜色条(Colorbar)设置

颜色条是解释图表中颜色含义的重要组件。scripts/tip-colorbar.py展示了如何添加和自定义颜色条。

# 颜色条设置示例(源自tip-colorbar.py)
np.random.seed(1)
Z = np.random.uniform(0, 1, (8, 8))
cmap = plt.get_cmap("Oranges")
im = ax.imshow(Z, interpolation="nearest", cmap=cmap, vmin=0, vmax=2)
cb = fig.colorbar(im, fraction=0.046, pad=0.04)  # 添加颜色条
cb.set_ticks([])  # 自定义颜色条刻度

色彩对比度与可读性

确保文本与背景的色彩对比度足够高,是提升图表可读性的关键。在scripts/colors.py中,通过计算亮度(luminance)来动态选择文本颜色,确保文本在不同背景色上都具有良好的可读性。

# 色彩对比度计算(源自colors.py)
alpha = C[0, :, 3]
rgb = C[0, :, :3] * alpha[:, np.newaxis] + (1 - alpha[:, np.newaxis])
luma = 0.299 * rgb[:, 0] + 0.587 * rgb[:, 1] + 0.114 * rgb[:, 2]
text_color = "black" if luma[i] > 0.5 else "white"  # 根据亮度选择文本颜色

项目资源与扩展学习

官方文档与教程

色彩相关脚本

样式文件

Matplotlib的样式文件可以统一设置图表的色彩风格,项目中提供了多个预定义样式:

通过本文的介绍,你已经掌握了Matplotlib色彩系统的核心知识和实战技巧。合理运用这些色彩工具和方法,将使你的数据可视化作品更加专业、清晰和具有吸引力。建议进一步探索项目中的示例脚本,尝试修改参数来观察色彩变化效果,逐步形成自己的色彩运用风格。

【免费下载链接】cheatsheets Official Matplotlib cheat sheets 【免费下载链接】cheatsheets 项目地址: https://gitcode.com/gh_mirrors/che/cheatsheets

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值