Я ищу сделать сюжет, похожий на один found here, с той простой разницей, что я хотел бы установить расстояние от центра для каждой точки. Т.е., учитывая кусочек сюжета, это круг, где я бы хотел, чтобы каждая из точек находилась на определенном расстоянии от центра.Matplotlib: Plot 2d array радиально сделать 3d Scatterplot
Что я стартовое с учетом простой модификацией ранее упомянутый ответ:
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))
То, что я хотел бы построить (извинения за размытый рисунок):
I попытались использовать interp2d, чтобы добавить переменную u
, прокомментированную выше, но не повезло. Изменение Z
на массив u
породило ошибку, что X, Y и Z должны быть одного размера ("Argument 'zs' must be of same size as 'xs' "
, понятно, как X и Y теперь интерполированы) Что мне нужно сделать? Любые советы будут оценены!