gpt4 book ai didi

python - 绘图问题(matplotlib): "ValueError: posx and posy should be finite values"

转载 作者:行者123 更新时间:2023-12-01 16:24:17 28 4
gpt4 key购买 nike

我解决了在stackoverflow上找不到的问题,因此我决定将其上传给遇到此错误的其他人。

我有一组功能可以从不同的情节创建视频。我用它来举例说明位置([X Y]坐标)如何随时间变化。

在我的一个绘图过程中(请参见示例代码中的“a_plotting_function”),我使用了matplotlib的“文本”将文本添加到绘图中。但是,在某些情况下,它会导致错误:

“ValueError:posx和posy应该是有限值”

该错误出现在“writer.grab_frame()”上,这使我很难找到实际的错误。

在示例代码中,错误可能很容易发现:要绘制的坐标之一的X值设置为np.nan。

尤其难以捕获此错误,因为1)我使用的实际绘图过程更加复杂(或:更难于阅读),并且2)错误并未指出原因(结果是“plt.text” ”,由于某些原因会使posx和posy无限。)。

我希望我省去了别人在将来某个时候找到原因的努力!

import matplotlib.pyplot as plt
import matplotlib.animation as manimation
import numpy as np

def a_plotting_function(X, Y, dX, dY, print_string):

plt.plot([X-dX, X], [Y-dY, Y])
plt.text(X, Y, print_string)

X = 0
Y = 0

dX = 1
dY = 2

frames = 30
frameRate = 24
dpi = 300

print_string = 'poetry'

writer = manimation.FFMpegWriter(fps = frameRate, extra_args=['-pix_fmt', 'yuv420p'])

fig, ax = plt.subplots()

ax.set_xlim((X, X + frames * dX))
ax.set_ylim((Y, Y + frames * dY))

with writer.saving(fig, 'my_beautiful_movie.mp4', dpi):

for frame in range(frames):

X += dX
Y += dY

if X > 0.7 * frames:
X = np.nan

a_plotting_function(X, Y, dX, dY, print_string)

writer.grab_frame()

ValueError:posx和posy应该是有限值
[在2.​​7秒内完成,退出代码为1]
[shell_cmd:python -u“stack_overflow\value_error_matplotlib.py”]

最佳答案

答案(在帖子中有部分解释)是,如果坐标为“np.nan”,则matplotlib的“文本”会将posx和posy设置为无穷大。在绘制图形时,它不会被注意到,而仅在将框架抓到writer对象上时才会被注意到。

因此:避免将任何坐标(对于matplotlib的文本)设为np.nan来制作无限大的图。

关于python - 绘图问题(matplotlib): "ValueError: posx and posy should be finite values",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57674890/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com