python - 使用 tab* 内置元素在 matplotlib 中组成颜色图

标签 python matplotlib colormap

我正在尝试使用matplotlib绘制一些彩色离散数据。 使用 tab10-like 颜色图我得到了很好的结果

enter image description here

但是,我需要 tab20 和 tab20b 部分的组合,才能将我的数据绘制为:

1->tab20darkblue
2->tab20lightblue
3->tab20cOrange1
4->tab20cOrange2
5->tab20cOrange3
6->tab20cOrange4

这可能吗?

最佳答案

您可以根据其他颜色图的颜色创建ListedColormap

例如,要从 tab20c 颜色图中获取暗橙色,请使用 plt.cm.tab20c(4) (因为这是该图中的第五种颜色)。请注意,这仅适用于索引颜色图 - 否则您需要使用 0 到 1 之间的值。

从由此获得的颜色列表中,您可以创建一个新的ListedColormap

import matplotlib.pyplot as plt
import matplotlib.colors
import numpy as np

colors = [plt.cm.tab20(0),plt.cm.tab20(1),plt.cm.tab20c(4),
          plt.cm.tab20c(5),plt.cm.tab20c(6),plt.cm.tab20c(7)]

cmap=matplotlib.colors.ListedColormap(colors)

x = np.arange(1,7)

plt.scatter(x,x,c=x, s=100, cmap=cmap, vmin=1, vmax=7)

plt.show()

enter image description here

或者,为了获得漂亮的颜色条,

import matplotlib.pyplot as plt
import matplotlib.colors
import numpy as np

colors = [plt.cm.tab20(0),plt.cm.tab20(1),plt.cm.tab20c(4),
          plt.cm.tab20c(5),plt.cm.tab20c(6),plt.cm.tab20c(7)]

cmap=matplotlib.colors.ListedColormap(colors)
norm = matplotlib.colors.BoundaryNorm(np.arange(1,8)-0.5,len(colors))

x = np.arange(1,7)

sc = plt.scatter(x,x,c=x, s=100, cmap=cmap, norm=norm)
plt.colorbar(sc, ticks=x)

plt.show()

enter image description here

关于python - 使用 tab* 内置元素在 matplotlib 中组成颜色图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46961732/

相关文章:

python - 有没有办法在 matplotlib 图上动态编写数学公式?

python - 如何在 Anaconda 中安装 Matplotlib 3.4.1?

python - 将低于某个 CV2 颜色图阈值的值设置为透明

python - 将 Colormap 功能与 Pandas.DataFrame.Plot 结合使用

python - 如何在不同的图像上绘制给定的坐标?

python - Pandas 报告系列在小数时是一个对象

python - Selenium Python For 循环遍历 HTML 表 我想迭代第一行而不是所有行

Javascript 相当于 Python 的 urlparse.parse_qs()?

python - 使用 numpy/scipy 创建一个分配给特定整数值的颜色图

python - 在django中首先按降序排列空值