Python Matplotlib:径向打印二维阵列以生成三维散点图

Python Matplotlib:径向打印二维阵列以生成三维散点图,python,matplotlib,plot,3d,Python,Matplotlib,Plot,3d,我正在寻找一个类似的绘图,与简单的区别,我想为每个点设置从中心的距离。也就是说,给定一个图的切片是一个圆,我希望每个点都离中心有一个可定义的距离 首先,我对前面提到的答案进行了简单的修改: from mpl_toolkits.mplot3d import Axes3D import matplotlib import numpy as np from scipy.interpolate import interp1d from matplotlib import cm from matplotl

我正在寻找一个类似的绘图,与简单的区别,我想为每个点设置从中心的距离。也就是说,给定一个图的切片是一个圆,我希望每个点都离中心有一个可定义的距离

首先,我对前面提到的答案进行了简单的修改:

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))
我想要的情节(为模糊的草图道歉):


我曾尝试使用interp2d添加上面注释掉的
u
变量,但没有成功。将
Z
更改为数组
u
会引发一个错误,即X、Y和Z必须具有相同的大小(
“参数'zs'必须与'xs'具有相同的大小”
,可以理解,因为X和Y现在是插值的)我需要做什么?任何提示都将不胜感激

我不知道你的问题到底是什么意思。 我将
v
设为x轴上圆心的偏移量

from mpl_toolkits.mplot3d import Axes3D
import numpy as np
from scipy.interpolate import interp1d
from matplotlib import pyplot as plt
step = 0.04
maxval = 1.0
fig = plt.figure()
ax = Axes3D(fig)
# v 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
V = np.tile(v, (len(u), 1))
p = np.linspace(0,2*np.pi,len(r))
R,P = np.meshgrid(r,p)
# transform them to cartesian system
X,Y = V + 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([])
plt.show()

我不知道你的问题到底是什么意思。 我将
v
设为x轴上圆心的偏移量

from mpl_toolkits.mplot3d import Axes3D
import numpy as np
from scipy.interpolate import interp1d
from matplotlib import pyplot as plt
step = 0.04
maxval = 1.0
fig = plt.figure()
ax = Axes3D(fig)
# v 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
V = np.tile(v, (len(u), 1))
p = np.linspace(0,2*np.pi,len(r))
R,P = np.meshgrid(r,p)
# transform them to cartesian system
X,Y = V + 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([])
plt.show()