【发布时间】:2019-03-22 22:59:33
【问题描述】:
我有几个要添加单个颜色条的子图。每个子图由 7 个散点组成。我找到了有关如何添加颜色条的建议,但它们主要与每个散点的值有关,而不是与行本身有关。
代表性示例代码:
import numpy as np
from matplotlib import pyplot as plt
x = range(50)
scales = np.linspace(0, 2, 7)
locs = range(4)
cmap = plt.get_cmap("Spectral")
for s_plot in range(4):
plt.subplot(2, 2, s_plot+1)
color = iter(cmap(np.linspace(0, 1, len(scales))))
for scale in scales:
c = next(color)
y = np.random.normal(loc=locs[s_plot], scale=scale, size=50)
plt.scatter(x, y, c=c, s=5)
plt.title("Mean = {:d}".format(locs[s_plot]))
plt.subplots_adjust(hspace=0.4)
plt.show()
我想要的颜色条看起来像这样(假的,放在情节旁边):
所以颜色条不描述我的散点值,而是迭代的不同“行”(在这种情况下:不同的比例)。在有助于将点与比例匹配的示例中。
我尝试的很简单
plt.colorbar()
在完成每个子图后调用一次。但我明白了
TypeError: You must first set_array for mappable
另外,由于我要为其创建颜色图的比例不同,所以我也尝试过
plt.colorbar(scales)
返回:AttributeError: 'numpy.ndarray' object has no attribute 'autoscale_None'。
我目前对如何进行此操作缺乏指导。
编辑:我被标记为matplotlib colorbar for scatter 的可能重复项。我已经发现了这个问题,但它对我的问题没有帮助。就我而言,我需要一个独立于 z 值的颜色图,但只会指示“行号”或“散点行”,或者您想要调用它(相当于 plt.plot 中的“行”) )。
【问题讨论】:
标签: python matplotlib legend colorbar scatter