Я пытаюсь использовать функцию pcolormesh matplotlib для рисования диаграммы, которая показывает точки в 2d координатах, а цвет точек будет определяться числом.Matplotlib Pcolormesh - в каком формате я должен давать данные?
У меня есть три массива, один из которых имеет координаты x, другой с y-координатами, а третий - номера, которые должны представлять цвета.
xdata = [ 695422. 695423. 695424. 695425. 695426. 695426.]
ydata = [ 0. -15.4 -15.3 -15.7 -15.5 -19. ]
colordata = [ 0. 121. 74. 42. 8. 0.]
Теперь, по-видимому, pcolormesh хочет, чтобы его данные представляли собой три массива 2d. В некоторых примерах, которые я видел что-то вроде этого делается:
newxdata, newydata = np.meshgrid(xdata,ydata)
Хорошо, но как я могу получить colordata в подобном формате? Я пробовал это так:
newcolordata, zz = np.meshgrid(colordata, xdata)
Но я не совсем уверен, правильно ли это. Теперь, если я пытаюсь нарисовать диаграмму:
ax.pcolormesh(newxdata, newydata, newcolordata)
я получаю то, что выглядит как this. Нет ошибок, поэтому я думаю, это хорошо. Изображение, которое он возвращает, очевидно, не похоже на то, что я хочу. Может ли кто-нибудь указать мне в правильном направлении? Является ли массив данных еще в неправильном формате?
Это должно быть все важные код:
newxdata, newydata = np.meshgrid(xdata,ydata)
newcolordata, zz = np.meshgrid(colordata, xdata)
print newxdata
print newydata
print newcolordata
diagram = plt.figure()
ax = diagram.add_subplot(111)
xformat = DateFormatter('%d/%m/%Y')
ax.xaxis_date()
plot1 = ax.pcolormesh(newxdata, newydata, newcolordata)
ax.set_title("A butterfly diagram of sunspots between dates %s and %s" % (date1, date2))
ax.autoscale(enable=False)
ax.xaxis.set_major_formatter(xformat)
diagram.autofmt_xdate()
if command == "save":
diagram.savefig('diagrams//'+name+'.png')
Edit: я заметил, что цвета действительно соответствуют номеру. Теперь мне просто нужно превратить эти бары одинакового размера в точки.
чтении принят ответ, я думаю, что вопрос вводит в заблуждение: если вы хотите гистограмм, вы не должны смотреть на pcolormesh, meshgrid ... которые связаны с показывая скаляры интерполяцией над регулярной сеткой – SAAD