保存由函数 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_temperature
和 mx_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之函数图像绘制、线条rc参数设置
python_matplotlib 输出(保存)矢量图方法;画图时图例说明(legend)放到图像外侧;Python_matplotlib图例放在外侧保存时显示不完整问题解决