以编程方式更改matplotlib填充数据

时间:2014-05-02 14:39:12

标签: python matplotlib

我正在使用Matplotlib创建动画,而我正在使用Fill对象。我希望能够从函数中更改填充数据。对于其他情节类型,通常有set_data()函数或set_offsets()。填充似乎没有。我希望做类似下面的代码,但这不起作用。有什么想法吗?

import matplotlib.pyplot as plt
fig = plt.figure()
ax = plt.axes(xlim=(-1, 1), ylim=(-1, 1),)
triangle, = ax.fill([0,1,1],[0,0,1])
# I want to change the datapoints later in my code, like this:
triangle.set_data([0,2,2],[0,0,2])

1 个答案:

答案 0 :(得分:1)

这没有特别详细记录,但Polygon个对象有一对方法get_xyset_xy。方法get_xy()返回形状为Ndarray的ndarray(N + 1,2)。额外的点是第一个点的重复(以便多边形关闭)。将所需数据放入预期格式(这是在构建Polygon对象的文档中指定的格式):

triangle.set_xy(np.array([[0, 2, 2, 0],[0, 0, 2, 0]]).T)
ax = plt.gca()
ax.set_xlim([0, 3])
ax.set_ylim([0, 3])
plt.draw()

这甚至可以让您更改补丁中的顶点数量。

添加了问题以澄清文档https://github.com/matplotlib/matplotlib/issues/3035