保存由函数 matplotlib python 产生的绘图

Posted

技术标签:

【中文标题】保存由函数 matplotlib python 产生的绘图【英文标题】:save a plot resulting from a function matplotlib python 【发布时间】:2014-07-16 22:12:31 【问题描述】:

我创建了一个函数,它从数据集中获取一系列值并输出一个图。例如:

my_plot(location_dataset, min_temperature, max_temperature) 将返回函数中指定温度范围内的降水图。

假设我想保存加利福尼亚温度在 60-70F 之间的图。因此,我将调用我的函数my_plot(California, 60, 70),并在温度介于 60 到 70F 之间时获得加利福尼亚的降水图。

我的问题是:如何将调用函数产生的绘图保存为 jpeg 格式?

我知道plt.savefig() 不是调用函数的结果,但就我而言,我该怎么做?

谢谢!

更多细节:这是我的代码(高度简化):

import matplotlib.pyplot as plt

def my_plot(location_dataset, min_temperature, max_temperature):
    condition = (location_dataset['temperature'] > min_temperature) & (dataset['temperature'] <= max_temperature)
    subset = location_dataset[condition] # subset the data based on the temperature range

    x = subset['precipitation'] # takes the precipitation column only
    plt.figure(figsize=(8, 6))
    plt.plot(x)
    plt.show()

然后我将这个函数称为如下:my_plot(California, 60, 70),我得到了 60-70 温度范围的图。如何在函数定义中不包含savefig 的情况下保存此图(这是因为我需要更改最低和最高温度参数。

【问题讨论】:

因为我的情节是我调用的函数的结果,这有意义吗,还是我应该编辑我的原始帖子? 然后再分享一些代码。 my_plot 返回什么?或者,将绘图保存在 my_plot 函数中。 好的,我编辑了它。为了回答您的问题,my_plot 在给定由 min_temperaturemx_temperature 参数指定的温度范围内返回一个绘图 在函数中调用pyplot 是不好的做法,最好将Axes 对象传递给函数并使用OO 接口。 【参考方案1】:

将对figure 的引用指向某个变量,并从您的函数中返回它:

import matplotlib.pyplot as plt

def my_plot(location_dataset, min_temperature, max_temperature):
    condition = (location_dataset['temperature'] > min_temperature) & (dataset['temperature'] <= max_temperature)
    subset = location_dataset[condition] # subset the data based on the temperature range

    x = subset['precipitation'] # takes the precipitation column only
    # N.B. referenca taken to fig
    fig = plt.figure(figsize=(8, 6))
    plt.plot(x)
    plt.show()

    return fig

调用该函数时,可以使用引用保存图形:

fig = my_plot(...)
fig.savefig("somefile.png")

【讨论】:

你有没有尝试将fig.save直接放入函数中?

以上是关于保存由函数 matplotlib python 产生的绘图的主要内容,如果未能解决你的问题,请参考以下文章

Python机器学习(七十)Matplotlib 保存图形

Python matplotlib之函数图像绘制、线条rc参数设置

python_matplotlib 输出(保存)矢量图方法;画图时图例说明(legend)放到图像外侧;Python_matplotlib图例放在外侧保存时显示不完整问题解决

Python Matplotlib 中如何用 plt.savefig 存储图片

Python之Matplotlib库常用函数大全(含注释)

Python使用matplotlib做出的图,怎么输出高清的图像