непрерывная цветовая карта на участке поверхности

#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.