gpt4 book ai didi

python - 在 Python 中将二维图形转换为圆柱体

转载 作者:行者123 更新时间:2023-11-28 16:25:55 26 4
gpt4 key购买 nike

目前我有一个看起来像这样的图形,enter image description here

由代码生成:

import matplotlib.pyplot as plt

import numpy as np

data = np.random.rand(20,5)
rows,cols = data.shape

plt.imshow(data, interpolation='nearest', extent=[0.5, 0.5+cols, 0.5, 0.5+cols], cmap='bwr')
plt.show()

但是我想将它“折叠”成一个 3D 圆柱体,将左右边缘连接起来(就像处理一张纸一样)。换句话说,左边缘和右边缘实际上是相同的边缘,所以我想将它们连接在一起形成一个圆柱体。

我该怎么做?

最佳答案

Poly3DCollectionmplot3d 中任意 3D 多边形的选择方法。

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
import numpy as np

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

nphi,nz=12,20
r=1 # radius of cylinder
phi = np.linspace(0,360, nphi)/180.0*np.pi
z= np.linspace(0,1.0,nz)
print z

facecolors=['r','g','b','y']
cols=[]
verts2 = []
for i in range(len(phi)-1):
cp0= r*np.cos(phi[i])
cp1= r*np.cos(phi[i+1])
sp0= r*np.sin(phi[i])
sp1= r*np.sin(phi[i+1])

for j in range(len(z)-1):
z0=z[j]
z1=z[j+1]
verts=[]
verts.append((cp0, sp0, z0))
verts.append((cp1, sp1, z0))
verts.append((cp1, sp1, z1))
verts.append((cp0, sp0, z1))
verts2.append(verts)
value=np.random.rand()
print value
col=plt.cm.bwr(value)
print col
cols.append(col)

poly3= Poly3DCollection(verts2, facecolor=cols )

poly3.set_alpha(0.8)
ax.add_collection3d(poly3)
ax.set_xlabel('X')
ax.set_xlim3d(-1, 1)
ax.set_ylabel('Y')
ax.set_ylim3d(-1, 1)
ax.set_zlabel('Z')
ax.set_zlim3d(0, 1)
plt.show()

enter image description here

关于python - 在 Python 中将二维图形转换为圆柱体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36669358/

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