Scatter Plot 3D mit Etiketten und Kugeln

Ich versuche, ein Scatter-Plot mit einigen Datenpunkten (x, y, z, Radius) zu machen und das ist mein Ergebnis bis jetzt:

import numpy as np from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt x = np.random.rand(20) y = np.random.rand(20) z = np.random.rand(20) r = np.random.rand(20) plt.rc('text', usetex=True) plt.rcParams['text.latex.preamble']=[r"\usepackage{amsmath}"] fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter(x, y, z, s=np.pi*r**2*100, c='blue', alpha=0.75) ax.set_xlabel(r'$x$ $\left[\frac{\text{Mpc}}{h}\right]$') ax.set_ylabel(r'$y$ $\left[\frac{\text{Mpc}}{h}\right]$') ax.set_zlabel(r'$z$ $\left[\frac{\text{Mpc}}{h}\right]$') #plt.savefig('spheres.png') plt.show() 

Http://www.file-upload.net/download-9033814/spheres.png.html

Wie kann ich diese Handlung verbessern, um keine Überlappung der x- und y-Etiketten mit den Tics zu haben?

Und es gibt dort eine Möglichkeit, Sphären statt Flächen in diesem 3D-Plot zu machen?

One Solution collect form web for “Scatter Plot 3D mit Etiketten und Kugeln”

Sie können ein Plot erstellen, das Sphären anstelle von Kreismarkierungen verwendet, indem man an jedem Ort, wie hier beschrieben, ein Stück zeichnet. Hier ist ein Beispiel:

 import numpy as np from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt def drawSphere(xCenter, yCenter, zCenter, r): #draw sphere u, v = np.mgrid[0:2*np.pi:20j, 0:np.pi:10j] x=np.cos(u)*np.sin(v) y=np.sin(u)*np.sin(v) z=np.cos(v) # shift and scale sphere x = r*x + xCenter y = r*y + yCenter z = r*z + zCenter return (x,y,z) x = 10*np.random.rand(20) y = 10*np.random.rand(20) z = 10*np.random.rand(20) r = np.random.rand(20) fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # draw a sphere for each data point for (xi,yi,zi,ri) in zip(x,y,z,r): (xs,ys,zs) = drawSphere(xi,yi,zi,ri) ax.plot_wireframe(xs, ys, zs, color="r") plt.show() 

Sphären in 3D-Darstellung

Um das Etikettenpositionierungsproblem zu beheben, versuchen Sie, eine zweite Zeile hinzuzufügen, wie hier beschrieben.

  • TypeError: unhashable type: 'numpy.ndarray'
  • GCC-PHAT-Kreuzkorrelation in Python
  • Wechselnde dtypen von strukturierten / record arrays
  • Effiziente Numpy 2D-Array-Konstruktion aus 1D-Array
  • Gibt es Unterstützung für spärliche Matrizen in Python?
  • Warum ist Scipys ndimage.map_coordinates, die keine Werte oder falsche Ergebnisse für einige Arrays zurückgibt?
  • RuntimeWarning: dividiere durch null im log
  • Numpy Structured Arrays nach Name und Index
  • PyTables Schreibfehler
  • Numpy: Verwenden Sie Umform oder Newaxis, um Dimensionen hinzuzufügen
  • Wie funktioniert diese ein-heiße Vektor-Konvertierung?
  • Python ist die beste Programmiersprache der Welt.