2016-06-19 10 views
1

Mit MatPlotLib möchte ich eine Kugel zeichnen, indem ich eine Reihe von Kugelkoordinaten aufzeichnet. Ich bin auf halbem Weg, aber ich kann nicht ganz erreichen, was ich will.Zeichnen einer Drahtgitterkugel mit MatPlotLib

Bisher hat die folgenden Code:

import numpy as np 
import matplotlib.pyplot as plt 
import mpl_toolkits.mplot3d.axes3d as axes3d 

theta, phi = np.linspace(0, 2 * np.pi, 13), np.linspace(0, np.pi, 7) 
THETA, PHI = np.meshgrid(theta, phi) 
R = 1.0 
X = R * np.sin(PHI) * np.cos(THETA) 
Y = R * np.sin(PHI) * np.sin(THETA) 
Z = R * np.cos(PHI) 
fig = plt.figure() 
ax = fig.add_subplot(1,1,1, projection='3d') 
plot = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, linewidth=0, color='white', antialiased=False, alpha=1, frameon=False) 

plt.show() 

Erzeugt die folgende Handlung:

enter image description here

Was ich will jetzt tun zu können, sind die folgenden zwei Dinge:

  1. Beenden Sie die Schattierung jeder Oberfläche, so dass alle Oberflächen th sind Die gleiche Farbe (weiß). Zeichnen Sie stattdessen eine Linie (schwarz) zwischen jede Oberfläche. Auf diese Weise sollte die Kugel wie ein Drahtgitter statt eines schattierten festen Objekts aussehen. Ich habe versucht shade=False in ax.plot_surface(...), und dies bringt mich auf halbem Wege durch Anhalten der Schattierung - aber alle Oberflächen am Ende sind die gleiche Farbe, und so ohne den Draht Rahmen, können Sie nicht zwischen jeder Oberfläche unterscheiden.

  2. Entfernen Sie die Achsen aus dem Diagramm, so dass die Kugel nur für sich allein steht. Ich habe frameon=False in ax.plot_surface(...) versucht, aber das gibt mir den Fehler: AttributeError: Unknown property frameon.

Irgendwelche Hilfe?

Vielen Dank!

Antwort

Verwandte Themen