gpt4 book ai didi

python - 使用 Matplotlib/Python 创建一堆极坐标图

转载 作者:太空宇宙 更新时间:2023-11-03 14:31:56 26 4
gpt4 key购买 nike

我需要生成一堆 2D 极坐标图(3D 圆柱图),以便我可以查看扭曲的圆柱。我想使用 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()

enter image description here

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

enter image description here

关于python - 使用 Matplotlib/Python 创建一堆极坐标图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9211867/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com