# Plotting Activity with Python and matplotlib

##### Moodle

The goal is to do this assignment in Anaconda Python

##### Types of Plots

Plots are very useful for displaying information that has a temporal occurrence such as the monthly precipitation data. There are many different kinds of plots including line and bar graphs as well as scatter plots (i.e. plots of points representing observations in the data).

To create a plot, you need to provide data for the x-axis (i.e. horizontal axis) and the y-axis (i.e. vertical axis) of the plot. The data can be contained in various formats including lists and other data structures such as numpy arrays and pandas dataframes.

In this lesson, you will use your previously created lists for average monthly precipitation in Boulder, CO to create and customize a plot. You will use months along the x-axis and precip along the y-axis.

MonthPrecipitation (inches)
Jan 0.70
Feb 0.75
Mar 1.85
Apr 2.93
May 3.05
June 2.02
July 1.93
Aug 1.62
Sept 1.84
Oct 1.31
Nov 1.39
Dec 0.84

Now that you know how to import Python packages, you can begin your code by importing the `matplotlib`package, and specifically, the pyplot module.

Recall that in the Python community (that you are now a part of!), the matplotlib.pyplot is often assigned an alias of plt.

``````# import necessary Python packages
import matplotlib.pyplot as plt

# print a message after the package has been imported successfully
print("import of packages successful")
``````
``````import of packages successful
``````

## Create Lists

Review your Python skills to create lists of the converted values for average monthly precipitation (mm) and of the month names.

``````# create variables for each month of average precipitation for Boulder, CO
jan = 0.70 * 25.4
feb = 0.75 * 25.4
mar = 1.85 * 25.4
apr = 2.93 * 25.4
may = 3.05 * 25.4
june = 2.02 * 25.4
july = 1.93 * 25.4
aug = 1.62 * 25.4
sept = 1.84 * 25.4
oct = 1.31 * 25.4
nov = 1.39 * 25.4
dec = 0.84 * 25.4

# create a list of the converted monthly variables for the y-axis of your plot
precip = [jan, feb, mar, apr, may, june, july, aug, sept, oct, nov, dec]

# create a list of the month names for the x-axis of your plot
months = ["Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec"]
``````

## Plot Data From Lists

Since you now have lists containing the converted values for average monthly precipitation and the month names, you can use these lists to create a plot using matplotlib.

Matplotlib is a plotting package that makes it simple to create plots from various data structures in Python, including lists.

Matplotlib uses default settings, which help to create publication quality plots with a minimal amount of settings and tweaking. Matplotlib graphics are built step by step by adding new elements.

To build a matplotlib plot, you need to:

1. Create the empty plot on which data will be plotted
2. Define the plot elements including the x- and y- axes (variables)
3. Customize your plot to change default styles and to add titles and labels to the axes.

Begin by creating a plot using the default styles provided by matplotlib.pyplot.

``````# set plot size for the plot
plt.rcParams["figure.figsize"] = (8, 8)

# create the plot space upon which to plot the data
fig, ax = plt.subplots()

# add the x-axis and the y-axis to the plot
ax.plot(months, precip);
fig.savefig('graph.png')``````

### Add Title and Axis Labels

Expand your code to add a title to the plot and to label the axes.

``````# set plot size for all plots that follow
plt.rcParams["figure.figsize"] = (8, 8)

# set plot title size for all plots that follow
plt.rcParams['axes.titlesize'] = 20

# create the plot space upon which to plot the data
fig, ax = plt.subplots()

# add the x-axis and the y-axis to the plot
ax.plot(months, precip)

# set plot title
ax.set(title="Average Monthly Precipitation in Boulder, CO")

# add labels to the axes
ax.set(xlabel="Month", ylabel="Precipitation (mm)");
``````

## Change Plot Type

You can turn your plot into a bar plot using ax.bar(), providing the x- and y-axes as you did with ax.plot().

You can also assign a fill color using color="green".

``````# set plot size for all plots that follow
plt.rcParams["figure.figsize"] = (8, 8)

# create the plot space upon which to plot the data
fig, ax = plt.subplots()

# add the x-axis and the y-axis to the plot
ax.bar(months, precip, color="green")

# set plot title
ax.set(title="Average Monthly Precipitation in Boulder, CO")

# add labels to the axes
ax.set(xlabel="Month", ylabel="Precipitation (mm)");
``````

1. Recreate the x-axis to use full month name (e.g. January, not Jan) (hint: create a new months list).

2. Rotate the x-axis markers using plt.setp(ax.get_xticklabels(), rotation=45), so that the spacing along the x-axis is more appealing now that the months are longer.

3. Change your plot to a scatter plot using ax.scatter() (hint: see ax.bar(months, precip)).

### Turn in

Turn in a screenshot of the working Pythin spyder.

This topic: Main > WebHome > IntroToCSS2020 > PlottingActivity1
Topic revision: r3 - 2020-04-23 - JimSkon

Copyright © 2008-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback