#python #matplotlib #colormap #continuous
Вопрос:
Я хотел бы создать непрерывную цветовую карту с помощью matplotlib на 3D-графике поверхности, где цвет зависит от z-значения поверхности. Но с «обычными» функциями plt цветовая карта заполняет пространство между точками сетки тем же цветом, как показано на рисунке. Таким образом, нет непрерывного изменения цвета, скорее есть просто несколько цветных поверхностей, сшитых вместе:
x = range(0,126)
y = range(0,3)
#z is my data from the experiment
# make a grid of the x/y plane
X,Y= np.meshgrid(x,y)
# get the colormap for the graph
cmap=plt.get_cmap("RdBu")
# cmap = clr.LinearColormap.from_list('custom blue', ['#244162','#DCE6F1'], N=256)
#plot the corresponding z-value at every knot of the grid
surface = ax.plot_surface(X,Y,z, cmap = cmap, antialiased=True, edgecolor='gray' , linewidth=0.2)
m = cm.ScalarMappable(cmap=surface.cmap,norm=surface.norm)
m.set_array(z)
plt.colorbar(m)
ax.set_yticks(y)
ax.set_xticks(x[::25])
plt.show()
что выглядит примерно так:
3D-поверхностный участок
Нужно ли мне интерполировать поверхность между ними с помощью большего количества точек сетки или есть более элегантный способ? Я немного запутался в документации и синтаксисе
Заранее спасибо, мастерблибла
Комментарии:
1. У вас есть только три точки данных в y — кажется, диаграмма показывает, что у вас есть?
2. Да, у меня есть значения только в точках сетки (3 в направлении y), но я хочу, чтобы плоскость между ними была закодирована цветом в зависимости от ее высоты в направлении z.