Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Matplotlib/Python创建极坐标图堆栈_Python_3d_Plot_Matplotlib_Polar Coordinates - Fatal编程技术网

使用Matplotlib/Python创建极坐标图堆栈

使用Matplotlib/Python创建极坐标图堆栈,python,3d,plot,matplotlib,polar-coordinates,Python,3d,Plot,Matplotlib,Polar Coordinates,我需要生成一组二维极坐标图(三维柱坐标图),以便查看扭曲的圆柱体。我想使用matplotlib,因为我已经安装了它,并且想将我的代码分发给只有matplotlib的其他人。例如,假设我有一堆二维数组。有没有办法不用下载外部软件包就可以做到这一点?这是我的密码 #!usr/bin/env python import matplotlib.pyplot as plt import numpy as np x = np.arange(-180.0,190.0,10) theta = (np.pi/1

我需要生成一组二维极坐标图(三维柱坐标图),以便查看扭曲的圆柱体。我想使用matplotlib,因为我已经安装了它,并且想将我的代码分发给只有matplotlib的其他人。例如,假设我有一堆二维数组。有没有办法不用下载外部软件包就可以做到这一点?这是我的密码

#!usr/bin/env python
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-180.0,190.0,10)
theta = (np.pi/180.0 )*x    # in radians

A0 = 55.0
offset = 60.0

R = [116.225,115.105,114.697,115.008,115.908,117.184,118.61,119.998,121.224,122.216,\
122.93,123.323,123.343,122.948,122.134,120.963,119.575,118.165,116.941,116.074,115.66\
,115.706,116.154,116.913,117.894,119.029,120.261,121.518,122.684,123.594,124.059,\
123.917,123.096,121.661,119.821,117.894,116.225]

fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8],polar=True)     # Polar plot
ax.plot(theta,R,lw=2.5)
ax.set_rmax(1.5*(A0)+offset)
plt.show()

我还有10个类似的2D极坐标图,我想把它们很好地叠加起来。如果有什么更好的方法可以在3D中可视化扭曲的圆柱体,我完全愿意接受建议。任何帮助都将不胜感激。谢谢

如果要使用matplotlib堆叠极坐标图,一种方法是使用Axes3D模块。你们会注意到,我首先使用极坐标,然后在准备绘制它们时将它们转换回笛卡尔坐标

from numpy import *
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

n = 1000

fig = plt.figure()
ax = fig.gca(projection='3d')

for k in linspace(0, 5, 5):
    THETA = linspace(0, 2*pi, n)
    R     = ones(THETA.shape)*cos(THETA*k)

    # Convert to Cartesian coordinates
    X = R*cos(THETA)
    Y = R*sin(THETA)

    ax.plot(X, Y, k-2)

plt.show()

如果使用
ax.plot
的最后一个参数,它将控制每个切片的高度。例如,如果要将所有数据投影到一个轴上,可以使用
ax.plot(X,Y,0)
。对于一个更奇特的例子,您可以将数据的高度映射到一个函数上,比如一个鞍
ax.plot(X,Y,-X**2+Y**2)
。通过使用颜色,理论上可以表示多个4维数据集(尽管我不确定这有多清晰)。举例如下:


非常感谢!我想我根本没有做极坐标到笛卡尔坐标的转换。情节堆栈看起来很棒。一个简单的问题。是否可以将曲面渲染到堆叠图?那会让它看起来很像better@prrao是的,一个开始寻找的好地方是
contour3D
(请参阅)。若你们需要关于等高线图的帮助,可以问一个新问题。