Ich bin auf der Suche nach eine Handlung ähnlich der found here, mit dem einfachen Unterschied, den ich möchte, um den Abstand von der Mitte für jeden Punkt zu setzen. Dh, ein Stück der Handlung ist ein Kreis, wo ich möchte, dass jeder der Punkte in einer definierbaren Entfernung von der Mitte ist.Matplotlib: Plot 2D-Array radial zu machen 3d Scatterplot
Was ich ab, eine einfache Modifikation der zuvor erwähnten Antwort gegeben:
from mpl_toolkits.mplot3d import Axes3D
import matplotlib
import numpy as np
from scipy.interpolate import interp1d
from matplotlib import cm
from matplotlib import pyplot as plt
step = 0.04
maxval = 1.0
fig = plt.figure()
ax = Axes3D(fig)
# u here would define the desired distance from radial axis
# u=np.array([0,1,2,1,0,2,4,6,4,2,1])
v=np.array([4,4,6,3,6,4,1,4,4,4,4])
r=np.array([0,1,2,3,4,5,6,7,8,9,10])
f=interp1d(r,u)
# walk along the circle
p = np.linspace(0,2*np.pi,len(r))
R,P = np.meshgrid(r,p)
# transform them to cartesian system
X,Y = R*np.cos(P),R*np.sin(P)
Z=f(R)
ax.scatter(X, Y, Z)#, rstride=1, cstride=1, cmap=cm.jet)
ax.set_xticks([])
fig.savefig(str(output_prefix + '3d..png'), dpi=(200))
Was würde ich (Entschuldigung für die unscharfe Skizze) zeichnen mag:
I habe versucht, interp2d zu verwenden, um die u
Variable, die oben kommentiert wurde, hinzuzufügen, aber kein Glück. Das Ändern von Z
in das Array u
hat den Fehler verursacht, dass X, Y und Z die gleiche Größe haben müssen ("Argument 'zs' must be of same size as 'xs' "
, verständlicherweise, da X und Y jetzt interpoliert sind). Was muss ich tun? Irgendwelche Tipps würden geschätzt!