【问题标题】:Missing spine in 3d plot [duplicate]3d 图中缺少脊椎 [重复]
【发布时间】:2021-12-31 12:36:24
【问题描述】:

我使用以下代码来改变 matplotlib 中 3d-plot 轴的外观:

fig = plt.figure()
ax = fig.add_subplot(projection='3d')
ax.grid(False)
ax.xaxis.pane.set_edgecolor('black')
ax.yaxis.pane.set_edgecolor('black')
ax.zaxis.pane.set_edgecolor('black')
ax.xaxis.pane.fill = False
ax.yaxis.pane.fill = False
ax.zaxis.pane.fill = False
plt.show()

但是,缺少一根脊椎。如何激活丢失的脊椎(左侧的黑线)? 上面的代码产生了这个图:

【问题讨论】:

  • 根据视角,缺失的边框似乎被剪掉了。另请参阅this blogpost 作者写道 “我发现窗格边缘部分的可见性取决于视角。我发现将视图设置为ax1.view_init(elev=10, azim=135) 可以看到所有边缘线。”
  • 谢谢,这是一个错误。有没有不改变视角的解决方案?

标签: python python-3.x matplotlib


【解决方案1】:

我为你开发了这个程序,它运行良好:

from scipy import integrate
import pylab
from mpl_toolkits.mplot3d import axes3d, art3d

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
fig = plt.figure()
fig.set_edgecolor("green")

ax = fig.add_subplot(projection='3d')
ax.grid(False)
def lims(mplotlims):
    scale = 1.021
    offset = (mplotlims[1] - mplotlims[0])*scale
    return mplotlims[1] - offset, mplotlims[0] + offset
xlims, ylims, zlims = lims(ax.get_xlim()), lims(ax.get_ylim()), 
lims(ax.get_zlim())
i = pylab.array([xlims[0], ylims[0], zlims[0]])
f = pylab.array([xlims[0], ylims[0], zlims[1]])
p = art3d.Poly3DCollection(pylab.array([[i, f]]))
p.set_color('black')
ax.add_collection3d(p)

ax.xaxis.pane.set_edgecolor('black')
ax.yaxis.pane.set_edgecolor('black')
ax.zaxis.pane.set_edgecolor('black')


ax.xaxis.pane.fill = False
ax.yaxis.pane.fill = False
ax.zaxis.pane.fill = False

plt.show()

输出:

【讨论】:

猜你喜欢
  • 2017-11-03
  • 2015-07-06
  • 2011-03-27
  • 2015-08-12
  • 2014-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多