我正在尝试使用matplotlib
绘制一些彩色离散数据。
使用 tab10-like
颜色图我得到了很好的结果
但是,我需要 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()
或者,为了获得漂亮的颜色条,
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()
关于python - 使用 tab* 内置元素在 matplotlib 中组成颜色图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46961732/