Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

save a plot resulting from a function matplotlib python

I created a function that takes a range of values from a data set and outputs a plot. For instance:

my_plot(location_dataset, min_temperature, max_temperature) will return a plot of precipitation for the range of temperature specified in the function.

Let's say I want to save the plot for the temperature between 60-70F in California. so, I would call my function my_plot(California, 60, 70) and will get a plot of precipitation for California when temperatures are between 60 and 70F.

My question is: how do I save a plot that results from calling a function into a jpeg format?

I know of plt.savefig() when it is not the result of calling a function but in my case how do I do this?

Thanks!

More details: here is my code (heavily simplified):

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()

So then I call this function as follow: my_plot(California, 60, 70) and I get my plot for the 60-70 temperature range. how do I save this plot without having the savefig inside the function definition (and that is because I need to change the min and max temperature parameters.

like image 652
user3495042 Avatar asked Jul 16 '14 22:07

user3495042


People also ask

How do I save a generated plot in Python?

Saving a plot on your disk as an image file Now if you want to save matplotlib figures as image files programmatically, then all you need is matplotlib. pyplot. savefig() function. Simply pass the desired filename (and even location) and the figure will be stored on your disk.

Which function is used to save the plot using Pyplot?

pyplot. savefig() As the name suggests savefig() method is used to save the figure created after plotting data.

Which function can be used to export graph in matplotlib to PDF?

Save as PDF File If you want to export a graph with matplotlib, you will always call . savefig(path) .


1 Answers

Take the reference to the figure to some variable, and return it from your function:

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

When you call this function, you can use the reference for saving the figure:

fig = my_plot(...)
fig.savefig("somefile.png")
like image 87
DrV Avatar answered Oct 05 '22 07:10

DrV