Python Matplotlib savefig()操作错误:[Errno 30]只读文件系统:';image.png';
我正在尝试编写一个程序,创建matplotlib图表并保存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(
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的更多信息这并没有回答问题