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

3 投票
1 回答
887 浏览
提问于 2025-04-18 05:08

我正在用Matplotlib制作动画,并且使用了一个填充对象。我想通过一个函数来改变填充的数据。对于其他类型的图表,通常会有一个 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 个回答

2

这个内容的文档写得不是特别清楚,但Polygon对象有一对方法,分别是get_xyset_xy。方法get_xy()会返回一个形状为(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

撰写回答