मेरे पास एक साधारण 3D सतह प्लॉट है जिसमें मैं चाहता हूं कि कुल्हाड़ियां सभी दिशाओं में समान हों। मेरे पास कोड का निम्न भाग है:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm

X = np.array([-100,   0,  100])
Y = np.array([   0,  10,   20])

X_grid, Y_grid = np.meshgrid(X,Y)

Z_grid = np.matrix('0 10 4;'
                '1 11 3;'
                '0 10 5')

fig = plt.figure()
ax = fig.gca(projection='3d')
surf = ax.plot_surface(X_grid, Y_grid, Z_grid, rstride=1, cstride=1, cmap=cm.coolwarm, linewidth=1, antialiased=True)
plt.axis('Equal')

जो इस भूखंड को उत्पन्न करता है: यहां छवि विवरण दर्ज करें

फिर मुझे उचित अक्ष सीमा प्राप्त करने के लिए मैन्युअल रूप से ज़ूम आउट करना होगा। मैंने plt.xlim(-100,100) की कोशिश की है, लेकिन यह प्रतिक्रिया नहीं दे रहा है? साथ ही, the plt.axis('Equal') z-अक्ष पर लागू नहीं होता?

साजिश इस तरह दिखनी चाहिए:

enter image description here

0
Martin 1 जून 2018, 14:41

1 उत्तर

सबसे बढ़िया उत्तर

आप टिप्पणी में लिंक से रणनीतियों को आसानी से अनुकूलित कर सकते हैं ताकि संचालन केवल XY विमान को प्रभावित कर सके:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm

X = np.array([-100,   0,  100])
Y = np.array([   0,  10,   20])

X_grid, Y_grid = np.meshgrid(X,Y)

Z_grid = np.matrix('0 10 4;'
                '1 11 3;'
                '0 10 5')

fig = plt.figure()
ax = fig.gca(projection='3d')

surf = ax.plot_surface(X_grid, Y_grid, Z_grid, rstride=1, cstride=1, cmap=cm.coolwarm, linewidth=1, antialiased=True)

max_range = np.array([X_grid.max()-X_grid.min(), Y_grid.max()-Y_grid.min()]).max() / 2.0

mid_x = (X_grid.max()+X_grid.min()) * 0.5
mid_y = (Y_grid.max()+Y_grid.min()) * 0.5

ax.set_xlim(mid_x - max_range, mid_x + max_range)
ax.set_ylim(mid_y - max_range, mid_y + max_range)

plt.show()

आउटपुट:

enter image description here

1
Mr. T 4 जून 2018, 11:45