У меня есть несколько вспомогательных участков, к которым я хочу добавить одну цветовую панель.Каждый участок состоит из 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 для разброса .Я уже нашел этот вопрос, но он не помог с моей проблемой.В моем случае мне нужна цветовая карта, которая не зависит от z-значения, но будет указывать только «номер строки» или «scatter-row» или как вы хотите ее вызывать (эквивалентно «lines» в plt.plot
).