如何在Matplotlib中合并tab20b与tab20c两种离散颜色映射
合并tab20b与tab20c颜色映射实现多类别堆叠柱状图
完全可以轻松实现,核心思路是直接从Matplotlib的颜色映射中提取颜色列表并拼接,具体步骤如下:
- 从
plt.cm中分别提取tab20b和tab20c的全部20种颜色 - 将两个颜色数组合并为一个包含40种颜色的数组
- 绘制堆叠柱状图时,直接指定合并后的颜色列表即可
以下是可直接运行的代码示例:
import matplotlib.pyplot as plt import numpy as np # 提取两个颜色映射的完整颜色集合 tab20b = plt.cm.tab20b(np.linspace(0, 1, 20)) tab20c = plt.cm.tab20c(np.linspace(0, 1, 20)) # 拼接得到40种离散颜色 combined_colors = np.concatenate([tab20b, tab20c]) # 生成模拟数据(40个类别,5个分组) group_count = 5 category_count = 40 data = np.random.rand(group_count, category_count) # 绘制堆叠柱状图 fig, ax = plt.subplots(figsize=(10, 6)) bottom = np.zeros(group_count) for idx in range(category_count): ax.bar(range(group_count), data[:, idx], bottom=bottom, color=combined_colors[idx]) bottom += data[:, idx] ax.set_title('40类别堆叠柱状图') plt.tight_layout() plt.show()
额外提示:
- 若部分颜色区分度不足,可提前通过
plt.imshow预览两个颜色映射的颜色分布,再调整拼接逻辑 - 也可根据实际类别数量,只提取部分颜色进行拼接(比如取tab20b的15种+tab20c的10种)
内容的提问来源于stack exchange,提问作者Xtiaan
相关产品推荐
相关产品推荐

