47

这是生成绘图图像并将其保存在与代码相同的目录中的简单代码。现在,有没有办法可以将它保存在选择的目录中?

import matplotlib
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(range(100))

fig.savefig('graph.png')
4

9 回答 9

54

如果要保存到的目录是工作目录的子目录,只需在文件名前指定相对路径:

    fig.savefig('Sub Directory/graph.png')

如果您希望使用绝对路径,请导入os模块:

    import os
    my_path = os.path.abspath(__file__) # Figures out the absolute path for you in case your working directory moves around.
    ...
    fig.savefig(my_path + '/Sub Directory/graph.png')

如果不想担心子目录名前面的斜杠,可以智能加入路径如下:

    import os
    my_path = os.path.abspath(__file__) # Figures out the absolute path for you in case your working directory moves around.
    my_file = 'graph.png'
    ...
    fig.savefig(os.path.join(my_path, my_file))        
于 2015-08-03T22:20:14.527 回答
17

根据文档 savefig接受文件路径,因此您只需要指定完整(或相对)路径而不是文件名。

于 2012-07-07T08:56:07.440 回答
15

这是将绘图保存到所选目录的一段代码。如果目录不存在,则创建它。

import os
import matplotlib.pyplot as plt

script_dir = os.path.dirname(__file__)
results_dir = os.path.join(script_dir, 'Results/')
sample_file_name = "sample"

if not os.path.isdir(results_dir):
    os.makedirs(results_dir)

plt.plot([1,2,3,4])
plt.ylabel('some numbers')
plt.savefig(results_dir + sample_file_name)
于 2015-12-06T15:55:20.300 回答
8

除了已经给出的答案,如果你想创建一个新目录,你可以使用这个函数:

def mkdir_p(mypath):
    '''Creates a directory. equivalent to using mkdir -p on the command line'''

    from errno import EEXIST
    from os import makedirs,path

    try:
        makedirs(mypath)
    except OSError as exc: # Python >2.5
        if exc.errno == EEXIST and path.isdir(mypath):
            pass
        else: raise

接着:

import matplotlib
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(range(100))

# Create new directory
output_dir = "some/new/directory"
mkdir_p(output_dir)

fig.savefig('{}/graph.png'.format(output_dir))
于 2015-08-04T12:56:53.993 回答
7

简单的方法如下:


save_results_to = '/Users/S/Desktop/Results/'
plt.savefig(save_results_to + 'image.png', dpi = 300)

图像将保存在save_results_to具有名称的目录中image.png

于 2018-05-06T15:59:12.997 回答
2

这是一个使用带有 Sublime Text 2 编辑器的 Python 版本 2.7.10 保存到目录(外部 USB 驱动器)的简单示例:

import numpy as np 
import matplotlib.pyplot as plt

X = np.linspace(-np.pi, np.pi, 256, endpoint = True)
C, S = np.cos(X), np.sin(X)

plt.plot(X, C, color = "blue", linewidth = 1.0, linestyle = "-")
plt.plot(X, S, color = "red", linewidth = 1.0, linestyle = "-")

plt.savefig("/Volumes/seagate/temp_swap/sin_cos_2.png", dpi = 72)
于 2016-05-02T09:47:37.223 回答
1

您可以使用以下代码

name ='mypic'
plt.savefig('path_to_file/{}'.format(name))

如果要保存在代码所在的同一文件夹中,请忽略 path_to_file 并使用名称进行格式化。如果您在 python 脚本之外的仅一级有文件夹名称“图像” ,则可以使用,

name ='mypic'
plt.savefig('Images/{}'.format(name))

保存的默认文件类型为“.png”文件格式。如果要保存在循环中,则可以为每个文件使用唯一名称,例如 for 循环的计数器。如果我是柜台,

plt.savefig('Images/{}'.format(i))

希望这可以帮助。

于 2020-02-23T17:33:08.223 回答
0

最简单的方法:

plt.savefig( r'root path' +  str(variable)  + '.pdf' )

在这个例子中,我还创建了一个文件格式并将一个变量作为字符串。

'r' 代表根。

例如 :

plt.savefig( r'D:\a\b\c' +  str(v)  + '.pdf' )

请享用 !!

于 2022-01-21T18:36:36.317 回答
0

您只需将文件路径(目录)放在图像名称之前。例子:

fig.savefig('/home/user/Documents/graph.png')

其他示例:

fig.savefig('/home/user/Downloads/MyImage.png')
于 2019-12-31T01:44:22.383 回答