Python matplotlib 线框失真

标签 python matplotlib plot geometry wireframe

我正在尝试使用 matplotlib 创建一个由多个线框球体组成的图。我找到了一个代码片段来绘制这样一个球体 here所以我认为只需多次调用 plot_wireframe 就可以很容易地将它扩展到多个球体。我错了。这是一个代码片段:

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
u, v = np.mgrid[0:2*np.pi:20j, 0:np.pi:10j]
x=np.cos(u)*np.sin(v)
y=np.sin(u)*np.sin(v)
z=np.cos(v)
fig = plt.figure(figsize=(8,6))
ax = fig.gca(projection='3d')
ax.plot_wireframe(x*3.+5., y*3., z*3.,linewidths=.2)
ax.view_init(azim=30,elev=40)
ax.set_aspect("equal")
plt.show()
fig = plt.figure(figsize=(8,6))
ax = fig.gca(projection='3d')
ax.plot_wireframe(x*3.+5., y*3., z*3.,linewidths=.2)
spheres = [ [0,0,0,1], [3,0,0,1.6] ]
for v in spheres:
    ax.plot_wireframe(x*v[3]+v[0], y*v[3]+v[1], z*v[3]+v[2],linewidths=.2)
ax.view_init(azim=30,elev=40)
ax.set_aspect("equal")
plt.show()

如果您运行该代码,第一个绘图将显示一个漂亮的球体,而在第二个绘图中所有的球体都被扭曲和移动。我搜索以确保可以在同一轴上多次调用 plot_wireframe 但找不到任何东西。另外,我是 Python 菜鸟,但我不认为我做错了什么。 感谢您的帮助!

最佳答案

简短回答:手动调整轴限制:

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
u, v = np.mgrid[0:2*np.pi:20j, 0:np.pi:10j]
x=np.cos(u)*np.sin(v)
y=np.sin(u)*np.sin(v)
z=np.cos(v)

# I'm not sure what was this for.  
'''
fig = plt.figure(figsize=(8,6))
ax = fig.gca(projection='3d')
ax.plot_wireframe(x*3.+5., y*3., z*3.,linewidths=.2)
ax.view_init(azim=30,elev=40)
ax.set_aspect("equal")

plt.show()
'''

fig = plt.figure(figsize=(8,6))
ax = fig.gca(projection='3d')


ax.plot_wireframe(x*3.+5., y*3., z*3.,linewidths=.2)
spheres = [ [0,0,0,1], [3,0,0,1.6] ]
for v in spheres:
    ax.plot_wireframe(x*v[3]+v[0], y*v[3]+v[1], z*v[3]+v[2],linewidths=.2)
ax.view_init(azim=30,elev=40)

ax.set_xlim([0,7])   # Like so. 
ax.set_ylim([-3,3]) 
ax.set_zlim([-3,3]) 

ax.set_aspect("equal")
plt.show()

关于Python matplotlib 线框失真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12296856/

相关文章:

r - 使用 spplot 通过两个属性(通过颜色和符号)区分空间点

plot - 如何为每个x值创建一个箱形图?

python - gensim安装的问题

python - 如何知道一个字符串是否属于python中字符串列表的组合?

python - 不同步长的欧拉方法。如何更改算法代码以适应不同的步长值?

python - 在 matplotlib 中旋转(自定义路径)标记时尺寸失真

python - 函数返回链式值/设置变量本身是pythonic吗?

python - Python 中的模块是否有标准别名?

python - 如何在 seaborn 中将 groupby 绘制为百分比?

python - 如何将 sympy 函数转换为使用 matplotlib 绘图?