无法删除matplotlib polycollection中的原点
我从matplotlib教程中尝试了PolyCollection的例子,并注意到一件奇怪的事情。 我无法从轴原点中删除这些点,请参阅图。 我如何管理这个?
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.collections import PolyCollection
from matplotlib.colors import colorConverter
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
cc = lambda arg: colorConverter.to_rgba(arg, alpha=0.6)
xs = np.arange(5, 10, 0.4)
verts = []
zs = [0.0, 1.0, 2.0, 3.0]
for z in zs:
ys = np.random.rand(len(xs))
ys[0], ys[-1] = 0.1, 0
verts.append(list(zip(xs, ys)))
poly = PolyCollection(verts, facecolors = [cc('r'), cc('g'), cc('b'),
cc('y')])
poly.set_alpha(0.7)
ax.add_collection3d(poly, zs=zs, zdir='y')
ax.set_xlabel('X')
ax.set_xlim3d(0, 10)
ax.set_ylabel('Y')
ax.set_ylim3d(-1, 4)
ax.set_zlabel('Z')
ax.set_zlim3d(0, 1)
plt.show()
这是PolyCollection显式关闭功能的一个错误。
现在,关闭它,你会得到我认为是你期望的结果:
poly = PolyCollection(verts, facecolors = [cc('r'), cc('g'), cc('b'),
cc('y')], closed=False)
这里唯一的问题是你不应该在运行时得到你期望的结果,因为多边形不应该被关闭。 这是3D代码的另一个相关错误。 在任何情况下,这只影响边缘线,在你的例子中,它几乎没有任何区别(我原本以为它是正确的,直到我增加线宽才关闭)。
PolyCollection使用path.Path对象存储顶点,而对于封闭多边形,使用CLOSEPOLY顶点代码,该代码干净地关闭路径(在线中不重叠)。
PolyCollections的三维投影代码似乎是一个诡计,需要PolyCollection,提取路径,从这些路径获取顶点,抛弃那些顶点的代码,并假设它们都是真正的顶点坐标,然后直接修改原始PolyCollection上的顶点将使用具有2D屏幕投影坐标且无代码的新路径......并且无论您的设置如何,都会关闭。
我已经提出这个问题#2045。
链接地址: http://www.djcxy.com/p/71325.html上一篇: couldn't remove origin point in matplotlib polycollection