Этот сценарий matlab
#create data
x = linspace(-10,10,50);
y = linspace(-10,10,50);
[X, Y] = meshgrid (x,y);
Z = cos(sqrt(X.^2 + Y.^2));
#plot data
h = figure;
figsize = [20 7];
set (h,'papersize', figsize)
set (h,'paperposition',[0,0,figsize])
#left plot
subplot(1,2,1)
surfc(X,Y,Z,'linestyle','-');
view(295,60)
title("Title")
xlabel("x")
ylabel("y")
zlabel("z")
xlim ([min(x) max(x)])
ylim ([min(y) max(y)])
zlim ([-1 1])
caxis([-1 1])
#right plot
subplot(1,2,2)
surface(X,Y,Z,'linestyle','-');
colorbar ();
xlabel("x")
ylabel("y")
zlabel("z")
xlim ([min(x) max(x)])
ylim ([min(y) max(y)])
zlim ([-1 1])
caxis([-1 1])
генерирует следующий график ![matlab](https://i.stack.imgur.com/DHiwo.png)
I would like to do the same plot in python. This is how close I could get
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
#create data
x = np.linspace(-10 , 10)
y = np.linspace(-10 , 10)
X, Y = np.meshgrid(x, y)
Z = np.cos(np.sqrt(X**2 + Y**2))
#plot data
fig = plt.figure(figsize = (20,7))
#left plot
ax1 = fig.add_subplot(1,2,1, projection = '3d')
ax1.grid(True , which = 'both')
ax1.plot_surface(X ,Y ,Z , cmap='viridis', edgecolor='black')
ax1.set_title("Title")
ax1.set_xlabel("x")
ax1.set_ylabel("y")
ax1.set_zlabel("z")
ax1.set_xlim(x.min(), x.max())
ax1.set_ylim(y.min(), y.max())
ax1.set_zlim(-1,1)
#right plot
ax2 = fig.add_subplot(1,2,2)
ax2.grid(True , which = 'both')
sns.heatmap(Z ,xticklabels = x, yticklabels = y, cmap='viridis')
ax2.set_xlabel("x")
ax2.set_ylabel("y")
python
Наиболее очевидно, что отметки на правом графике необходимо улучшить.
Как я могу установить черные линии вокруг графика и шкалы цветов, а также сетку для правильного графика? Как мне установить zlim на [-1 1]? На графике Matlab есть контурные линии в плоскости xy. Есть ли у python аналогичная функция? Я бы также предпочел, чтобы левый и правый график имели тот же размер, что и в Matlab.