【发布时间】:2018-04-09 06:37:55
【问题描述】:
在下面我使用 scatter 和一个自己的ListedColormap 来绘制一些彩色数据点。另外还绘制了对应的colorbar。
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap, ListedColormap, BoundaryNorm
from numpy import arange
fig, ax = plt.subplots()
my_cm = ListedColormap(['#a71b1b','#94258f','#ea99e6','#ec9510','#ece43b','#a3f8ff','#2586df','#035e0d'])
bounds=range(8)
norm = BoundaryNorm(bounds, my_cm.N)
data = [1,2,1,3,0,5,3,4]
ret = ax.scatter(range(my_cm.N), [1]*my_cm.N, c=data, edgecolors='face', cmap=my_cm, s=50)
cbar = fig.colorbar(ret, ax=ax, boundaries=arange(-0.5,8,1), ticks=bounds, norm=norm)
cbar.ax.tick_params(axis='both', which='both',length=0)
如果我的数据没有覆盖边界间隔的每个值,colorbar 不会显示所有颜色(如添加的图中)。如果将data 设置为range(8),我会得到每种颜色的一个点,colorbar 也会显示所有颜色。
即使data 不包含所有边界值,如何强制colorbar 显示所有定义的颜色?
【问题讨论】:
标签: python-2.7 matplotlib scatter-plot