Python Matplotlib savefig()操作错误:[Errno 30]只读文件系统:';image.png';

Python Matplotlib savefig()操作错误:[Errno 30]只读文件系统:';image.png';,python,matplotlib,Python,Matplotlib,我正在尝试编写一个程序,创建matplotlib图表并保存png文件。我尝试使用savefig()方法(),但它给出了以下错误: OSError: [Errno 30] Read-only file system: 'image.png' 这是我的密码: fig = plt.figure() plt.title("Bar (Spreading of transactions)") plt.plot(bar_x, bar_y) plt.savefig(

我正在尝试编写一个程序,创建matplotlib图表并保存png文件。我尝试使用
savefig()
方法(),但它给出了以下错误:

OSError: [Errno 30] Read-only file system: 'image.png'
这是我的密码:

fig = plt.figure()
    plt.title("Bar (Spreading of transactions)")
    plt.plot(bar_x, bar_y)
    plt.savefig("image.png")
稍后我需要将此文件保存在临时文件中,并使用Flask访问它。

等等,savefig()不应该用作您的体形方法吗?例如,我的一个程序使用它如下:

def save(name):
    fig = plt.figure(num=1,figsize=(10,10), clear=True)
    #change axis color to white so they wont appear on the figure
    plt.rcParams['xtick.color'] = 'w'
    plt.rcParams['ytick.color'] = 'w'
    plt.rcParams['text.color'] = 'w'
    plt.rcParams['axes.labelcolor'] = 'w'
    #display the image on the figure
    plt.imshow(gist_rainbow(map))
    #save the figure
    fig.savefig(name)
这样,调用类似于
save(“image.png”)
的函数将保存图像
map
,由于matplotlib gist\u rainbow colormap,该图像存储在转换为RGBA的浮点矩阵下,但是,您可以使用它在
fig
声明和
savefig()
方法调用之间保存图形上显示的任何内容。
此外,如果文件已经存在,并且您希望覆盖它,则可能是权限问题。在这种情况下,您应该尝试在文件系统的多个文件上运行
ls-la
命令来搜索特定的限制。

我认为这可能是权限问题,而不是python问题。您需要更改尝试写入的文件夹的权限。在终端中,使用chmod:

chmod-R 777/absolute/path/to/your/folder
如果您不确定绝对路径是什么,请导航到您的目录(在终端中使用
cd
)并键入
pwd


OSX通常附带“终端”。如果您不确定在哪里可以找到它,请按“命令”+“空格键”并在搜索栏中键入“终端”。

这是权限问题。您可以指定您正在使用的用户具有写入权限的路径

您可以使用
ls-l/the/path/of/your/choice
检查权限。 在该目录中递归授予写入权限
chmod u+w-R/the/path/of/your/choice


u
对于拥有目录的用户,
+w
添加写入权限,
-R
递归执行)

尝试将“image.png”替换为“/image.png”(或使用完整路径)根据文件名中的“桌面”判断,我猜您是在Windows上。尝试创建一个目录,确保您能够写入,然后使用绝对路径,包括驱动器号,如上所述。类似于
“C:/MyDir/MyFile.png”
。哦!如果正斜杠可能有问题,请将其更改为反斜杠,但在字符串开头添加一个“r”。类似于
r“C:\MyDir\MyFile.png”。
您似乎在一个只读文件系统中,因此无法在其中保存图像,因为它不是读取操作。签出(这篇文章)[这篇文章在Ubuntu上,但我认为会给你另一种解决问题的可能性。尝试的一些初始步骤:(1)确定你试图保存
image.png
-这应该是你运行python的当前工作目录。(2)尝试从终端在该位置创建一个文件(
touch test.txt
)。如果仍然出现只读错误,您知道需要更改目录的权限或尝试保存到其他位置。如果可以,那么(3)尝试从python解释器写入该位置的文件(例如,使用open('test.txt','w')作为f:f.write(“测试”))。这将告诉您python是否能够写入该目录嘿!但是
gist\u rainbow
甚至不是来自matplotlib。我尝试导入它,但它不存在。因此我不确定应该怎么做。它是,但它是一个自定义名称,您需要从matplotlib import cm执行
gist\u rainbow=cm。获取cmap(name=“gist\u rainbow”)
get\u cmap
函数返回一个可调用函数,您可以将其分配给任何名称的变量)PS:您可以了解有关matplotlib colormap的更多信息这并没有回答问题