Python Matplotlib保存图像时出现FileNotFoundError错误。

7

我使用matplotlib制作了一张图表,现在我正在尝试使用matplotlib.pyplot.savefig将其保存到文件中。

import matplotlib.pyplot as plt

# . . .

plt.savefig("/home/username/PycharmProjects/sandbox/images/result.png")

目录"/home/username/PycharmProjects/sandbox/images/"存在,但遗憾的是在plt.savefig调用时出现FileNotFoundError。

有谁知道如何解决这个问题吗?


2
很有可能该目录不存在。请三次检查是否存在任何拼写错误或其他简单的疏忽。 - 9769953
我已经使用终端进行了Pentacheck检查。我还尝试过plt.savefig('result.png'),希望该文件保存到当前目录中,但这种方法也不起作用。 - Artem
你能否从Python正常地写入该目录?也就是说,使用with open(<full path>, "w") as fp: fp.write("random")这个方法可以吗? - 9769953
是的,你的表达式写得正确,而我的plt.savefig在相同的文件路径下失败了 :( - Artem
1
嗨!我有点晚了!我遇到了同样的问题,在我的情况下,名称中有一些“特殊”字符。特别是有一个“/”。 - solopiu
2个回答

3

大多数与保存文件和绘图相关的错误可以通过以下方式预防:

  • 绘制图表,
  • 构建保存目录的路径而不是将其硬编码为字符串,
  • 保存绘图。

无论您使用的操作系统是什么,您都可以获取Python脚本正在运行的当前目录,并从那里保存您的文件或在此位置创建子文件夹以保存您的文件。下面两种实现方法都使用了os库

导入所需的库

import os
import matplotlib.pyplot as plt

绘制图表

X = [_ for _ in range(100)]
plt.plot(X)
plt.title('A plot of 1st 100 numbers')

获取当前工作目录路径

current_directory_path = os.getcwd()
file_name = 'result.png'

这会获取当前目录的路径,你正在运行Python脚本。无需手动编写路径,否则可能导致错误,如果您忘记为您的操作系统转义特殊字符或适当的斜杠。

构建文件路径以保存在当前工作目录中

file_path = os.path.join(current_directory_path, file_name)

在Windows中,你会得到类似于c:\\Users\\...\\result.png的东西。在Linux中可能会有所不同。
构建文件路径以将绘图保存在子文件夹中。
subfolder_path = os.path.join(current_directory_path, 'subfolder')

if not os.path.exists(subfolder_path):
    os.makedirs(subfolder_path)

file_path = os.path.join(subfolder_path, file_name)

以上代码检查当前目录中是否存在名为“subfolder”的文件夹,如果不存在,则创建该文件夹。在Windows中,您会得到类似于c:\\Users\\...\\subfolder\\result.png'的路径。

保存绘图

plt.savefig(file_path)

最后,文件已成功保存至指定的 file_path,无任何错误。

3
在我的情况下,问题在于前导的/。因此,以下应该有效:
plt.savefig("home/username/PycharmProjects/sandbox/images/result.png")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接