Wie entferne ich den Überlauf entlang der Z-Achse für eine 3D-Matplotlib-Oberfläche?

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Wie entferne ich den Überlauf entlang der Z-Achse für eine 3D-Matplotlib-Oberfläche?

by Guest » 22 Dec 2024, 21:09

Ich versuche, eine 3D-Netzoberfläche mit matplotlib grafisch darzustellen und die Grenzen des Diagramms einzuschränken. Die X- und Y-Achsen sind korrekt eingeschränkt, aber es gibt einen Überlauf in der Z-Achse.
Was fehlt mir? Hier ist mein Code:
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits import mplot3d
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure(figsize=(10,10))

x = np.linspace(-6,6,100)
y = np.linspace(-6,6,100)
X,Y = np.meshgrid(x,y)

def f(x,y):
return x**2 + 3*y

Z = f(X,Y)

ax = plt.axes(projection = '3d')
ax.plot_surface(X,Y,Z,cmap='viridis')

ax.title.set_text("z=x**2+3y")
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')

ax.set_zlim3d(zmin=-3,zmax=5)
ax.set_xlim3d(xmin=-6,xmax=6)
ax.set_ylim3d(ymin=-6,ymax=6)

plt.show()

Das Diagramm:
Image

Bearbeiten:
Wenn ich Clipping/Min/Max zu den Z-Werten hinzufüge, ist das Diagramm etwas besser, aber es setzt z Werte außerhalb der Grenzen zu den Grenzen selbst. Die beiden folgenden Vorschläge bewirken dies. Vielleicht liegt es daran, dass ich einen Mac verwende?
z_tmp = np.maximum(np.minimum(5,Z),-3)

z_temp = np.clip(Z, -3, 5, None)

Image

Top