Я построил 2D-сетку как изображение, используя imshow (), и вдобавок к этому я хочу построить диаграмму рассеяния. Диаграмма рассеяния имеет координаты x и y и значения переменной "engery". Каждая точка на точечной диаграмме имеет индивидуальное значение «энергия», и я хочу, чтобы точки имели определенные c цветов на основе этого значения «энергия», соответствующего этим точкам x и y. Вот мой код ниже.
fig, ax = plt.subplots(figsize=(8,16))
plt.imshow(curlB, cmap='RdBu', vmin= -0.9, vmax= 0.9, alpha=0.6, extent=[-64.0,64.0,-96.0,96.0])
for iter in zip(identty, tstep, xcoord, ycoord, enrgy):
if((iter[1]/5.0)== data):
ax.scatter(iter[2], iter[3], vmin=0.0, vmax= 13.0, cm= np.arange(0,13,100), c=iter[4] ,cmap='rainbow', s=5.0, alpha= 1.0)
text=plt.annotate(iter[0], (iter[2], iter[3]), textcoords="offset points", xytext=(0,10), ha='center')
text.set_fontsize(6)
plt.colorbar()
plt.colorbar()
plt.tight_layout()
plt.show()
Он выдает сообщение об ошибке giganti c в виде
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/matplotlib/axes/_axes.py", line 4284, in _parse_scatter_color_args
colors = mcolors.to_rgba_array(c)
File "/usr/lib/python3/dist-packages/matplotlib/colors.py", line 294, in to_rgba_array
result[i] = to_rgba(cc, alpha)
File "/usr/lib/python3/dist-packages/matplotlib/colors.py", line 177, in to_rgba
rgba = _to_rgba_no_colorcycle(c, alpha)
File "/usr/lib/python3/dist-packages/matplotlib/colors.py", line 240, in _to_rgba_no_colorcycle
raise ValueError("Invalid RGBA argument: {!r}".format(orig_c))
ValueError: Invalid RGBA argument: 0.04667794065027229
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "highest_en.py", line 180, in <module>
ax.scatter(iter[2], iter[3], vmin=0.0, vmax= 13.0, c=[iter[4]], cmap='rainbow', s=5.0, alpha= 1.0)
File "/usr/lib/python3/dist-packages/matplotlib/__init__.py", line 1601, in inner
return func(ax, *map(sanitize_sequence, args), **kwargs)
File "/usr/lib/python3/dist-packages/matplotlib/axes/_axes.py", line 4451, in scatter
self._parse_scatter_color_args(
File "/usr/lib/python3/dist-packages/matplotlib/axes/_axes.py", line 4293, in _parse_scatter_color_args
raise ValueError(
ValueError: 'c' argument has 1 elements, which is not acceptable for use with 'x' with size 1, 'y' with size 1.
Я прочитал онлайн и обнаружил, что c не может быть отдельным поплавком, а это должна быть серия чисел. Но я хочу, чтобы точки были окрашены из цветовой карты на основе соответствующего значения 'engery' для этой точки.
Также я хотел бы иметь отдельные цветовые полосы на графике, одну для imshow , один для «энергии»
Короче говоря, предположим, что у меня есть кортеж (3,4,5), я хочу поставить точку разброса в координатах (3,4), имеющую значение цвета 5 из шкалы цветов (минимальное и максимальное значения я определю)
Любая помощь приветствуется. Заранее спасибо. :)