Konzeptionell ist das eine Art von was ich tun wollte. Ich wollte zufällige Punkte in einer 2D-Ebene auswählen und dann ein Oberflächen-Diagramm zeichnen, wie das aussehen würde. Ähnlich könnte eine Alternative (suboptimale Idee) darin bestehen, ein Meshgrid zu klassifizieren und N zufällige Punkte und ihre entsprechenden Höhen auszuwählen und sie dann in einem Oberflächendiagramm zu plotten.Wie verwendet man die Meshgrid-Funktion von numpy mit einem zufälligen Intervall statt einem gleichmäßigen?
Derzeit ist die einzige erfolgreiche Art und Weise, die ich habe in der Lage, um die Oberflächen Plots zu machen ist mit ebenso intervaled Punkten mit den folgenden:
start_val, end_val = -1,1
N = 100
x_range = np.linspace(start_val, end_val, N)
y_range = np.linspace(start_val, end_val, N)
(X,Y) = np.meshgrid(x_range, y_range)
Z = np.sin(2*np.pi*X) + 4*np.power(Y - 0.5, 2) #function height for the sake of an example
und dann zeichnen Sie die Sache mit dem Standard:
fig = plt.figure()
ax = fig.gca(projection='3d')
surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm)
plt.title('Original function')
plt.show()
Dies führt zu einem schönen Diagramm der Funktion, wie ich es erwartet hatte.
Allerdings möchte ich zufällige Punkte in einem bekannten Intervall auswählen. Dafür habe ich versucht, die Alternative:
start_val, end_val = -1,1
N = 100
x_range = np.random.uniform(low=start_val, high=end_val, size=N)
y_range = np.random.uniform(low=start_val, high=end_val, size=N)
(X,Y) = np.meshgrid(x_range, y_range)
Z = np.sin(2*np.pi*X) + 4*np.power(Y - 0.5, 2) #function height for the sake of an example
Leider, dass die Ergebnisse in nicht-Sinn:
statt etwas schöner als das Original mit den gleichmäßig verteilten Punkten:
jemand weiß, wie man die Aufgabe (oder eine ähnliche Aufgabe) Ich versuche zu tun, aber in der Lage zu plotten lief dom points oder ein wenig Zufälligkeit sinnvoll einbeziehen?
Dies klingt interessant, aber ich verstehe Ihr Hauptziel nicht: 'Ich wollte zufällige Punkte in einer 2D-Ebene auswählen und dann eine Oberflächenzeichnung zeichnen, wie das aussehen würde. Wie würden Sie die Höheninformationen für die Oberfläche aus zufälligen Punkten in 2D erhalten? Zum Beispiel, wenn Sie zufällig (4,4) in 2D wählen, wie erhalten Sie den dritten Wert in 3D (4,4 ,?) – mitoRibo
Ich empfehle, x_range und y_range zu sortieren, bevor Sie sie in Meshgrid verwenden. –
@rbierman Wenn Sie zwei Matrizen ihrer X- und Y-Koordinaten haben, können Sie einfach berechnen, was die Funktion ist. In Ihrem Beispiel tun Sie 'np.sin (2 * np.pi * X) + 4 * np.macht (Y - 0.5, 2)' mit X = 4 und Y = 4.Solange Sie die Koordinaten so organisiert haben, dass i mit X ith Y entspricht, berechnen Sie einfach Z mit f (X [i], Y [i]). – Pinocchio