@extends('template')
@section('title')
Bar Chart Examples from Lab 9
@stop
@section('content')
# Lab 9: Bar charts
#### Reference
+ [matplotlib.pyplot.bar](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.bar)
+ [matplotlib.pyplot.barh](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.barh)
#### Preface
For all of the examples below, assume both numpy and pyplot have been imported:
```py
import numpy as np
import matplotlib.pyplot as plt
```
#### Sample data
To demonstrate how to make bar charts, we're going to chart some sample data mapping students favorite candy.
```py
counts = [5,20,12]
candy = ["skittles","twizzlers","m&ms"]
```
## Super simple bar chart Version 1.0
```py
counts = [5,20,12]
candy = ["skittles","twizzlers","m&ms"]
position = np.arange(len(counts)) # [0 1 2]
# Default color is blue, default width is 0.8
# x y
plt.bar(position,counts)
show()
```
Note there are no labels in this example, just the bars of height `5`, `20`, and `12`.
We essentially plotted `[0,1,2]` against `[5,20,12]`.
## Super simple bar chart Version 2.0
```py
counts = [5,20,12]
candy = ["skittles","twizzlers","m&ms"]
position = np.arange(len(counts)) # [0 1 2]
# New width, color and alignment of bars
plt.bar(position, counts, width=0.5, color='green', align='center')
plt.show()
```
In this example we changed the color, width and placement of the bars (all in the `bar()` function)
## Super simple bar chart Version 3.0
```py
counts = [5,20,12]
candy = ["skittles","twizzlers","m&ms"]
position = np.arange(len(counts)) # array([0,1,2])
plt.bar(position,counts,width=0.5,color='green',align='center')
plt.xticks(position,candy) # added labels to x-axis
plt.title('Candy votes') # added title
plt.show()
```
In this example we added labels by using `plt.xticks` and a title using `plt.title`.
## A more complex bar chart
```py
# Made up data:
data = [79,83,92,43,64,78,85,93]
names = ["AB","BG","KG","CW","WE","GD","TM","OL"]
grid(True) # background grid visible
# `arange()` is like range but returns an array
# and works for floating point numbers
position = np.arange(len(data))
plt.bar(position, data, width=0.5, color='darkolivegreen', align='center')
xticks(position,names) # Marks on x-axis
title('Sample bar chart') # Title of bar chart
plt.show()
```
## A horizontal bar chart
All of the above examples used `bar()` which creates a vertical bar chart. To make a horizontal bar chart, use [`barh()`](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.barh).
Example:
```py
counts = [5,20,12]
candy = ["skittles","twizzlers","m&ms"]
position = np.arange(len(candy))
plt.barh(position,counts,0.5,align='center')
plt.yticks(position,candy) # Marks on x-axis
plt.show()
```
@include('/labs/lab09/_toc')
@stop