We’ve learned how to display errors on bar charts using error bars. Let’s take a look at how we might do this in an aesthetically pleasing way on line graphs.
In Matplotlib, we can use plt.fill_between()
to shade error. This function takes three arguments:
x-values
— this works just like the x-values ofplt.plot()
- lower-bound for y-values — sets the bottom of the shaded area
- upper-bound for y-values — sets the top of the shaded area
Generally, we use .fill_between()
to create a shaded error region, and then plot the actual line over it. We can set the alpha
keyword to a value between 0 and 1 in the .fill_between()
call for transparency so that we can see the line underneath. Here is an example of how we would display data with an error of 2:
x_values = range(10) y_values = [10, 12, 13, 13, 15, 19, 20, 22, 23, 29] y_lower = [8, 10, 11, 11, 13, 17, 18, 20, 21, 27] y_upper = [12, 14, 15, 15, 17, 21, 22, 24, 25, 31] plt.fill_between(x_values, y_lower, y_upper, alpha=0.2) #this is the shaded error plt.plot(x_values, y_values) #this is the line itself plt.show()
This would give us a plot that looks like:
Having to calculate y_lower
and y_upper
by hand is time-consuming. If we try to just subtract 2 from y_values
, we will get an error.
TypeError: unsupported operand type(s) for -: 'list' and 'int'
In order to correctly add or subtract from a list, we need to use list comprehension:
y_lower = [i - 2 for i in y_values]
This command looks at each element in y_values
and calls the element its currently looking at i
. For each new i
, it subtracts 2. These opperations create a new list called y_lower
.
If we wanted to add 2 to each element in y_values
, we use this code:
y_upper = [i + 2 for i in y_values]
Instructions
We have provided a set of data representing MatplotSip’s projected revenue per month for the next year in the variable revenue
.
Let’s plot these revenues against months
as a line in script.py.
Make an axis object, store it in the variable ax
, and then use it to set the x-ticks to months
and the x-axis tick labels to be the months of the year, given to you in the variable month_names
.
This data is a projection of future revenue. We don’t know that this will be the revenue, but it’s an estimate based on the patterns of past years. We can say that the real revenue will probably be plus or minus 10% of each value. Create a list containing the lower bound of the expected revenue for each month, and call it y_lower
.
Remember that 10% less than a number would be either:
i - 0.1 * i
or
0.9 * i
You can use either of these in your list comprehension.
Create a list containing the upper bound of the expected revenue for each month, and call it y_upper
.
Remember that 10% more than a number would be either:
i + 0.1 * i
or
1.1 * i
You can use either of these in your list comprehension.
Use .fill_between()
to shade the error above and below the line we’ve plotted, with an alpha of 0.2
.