<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 <!--BOOK_INFORMATION-->
<img align="left" style="padding-right
Step1:  We can adjust this by hand to make it a much more visually pleasing plot
Step2:  This looks better, and you may recognize the look as inspired by the look of the R language's ggplot visualization package.
But this took a whole lot of effort!
We definitely do not want to have to do all that tweaking each time we create a plot.
Fortunately, there is a way to adjust these defaults once in a way that will work for all plots.
Changing the Defaults
Step3:  Now we can use the plt.rc function to change some of these settings
Step4:  With these settings defined, we can now create a plot and see our settings in action
Step5:  Let's see what simple line plots look like with these rc parameters
Step6:  I find this much more aesthetically pleasing than the default styling.
If you disagree with my aesthetic sense, the good news is that you can adjust the rc parameters to suit your own tastes!
These settings can be saved in a .matplotlibrc file, which you can read about in the Matplotlib documentation.
That said, I prefer to customize Matplotlib using its stylesheets instead.
Stylesheets
The version 1.4 release of Matplotlib in August 2014 added a very convenient style module, which includes a number of new default stylesheets, as well as the ability to create and package your own styles. These stylesheets are formatted similarly to the .matplotlibrc files mentioned earlier, but must be named with a .mplstyle extension.
Even if you don't create your own style, the stylesheets included by default are extremely useful.
The available styles are listed in plt.style.available—here I'll list only the first five for brevity
Step7:  The basic way to switch to a stylesheet is to call
python
plt.style.use('stylename')
But keep in mind that this will change the style for the rest of the session!
Alternatively, you can use the style context manager, which sets a style temporarily
Step8:  We'll use this to explore how these plots look using the various built-in styles.
Default style
The default style is what we've been seeing so far throughout the book; we'll start with that.
First, let's reset our runtime configuration to the notebook default
Step9:  Now let's see how it looks
Step10:  FiveThiryEight style
The fivethirtyeight style mimics the graphics found on the popular FiveThirtyEight website.
As you can see here, it is typified by bold colors, thick lines, and transparent axes
Step11:  ggplot
The ggplot package in the R language is a very popular visualization tool.
Matplotlib's ggplot style mimics the default styles from that package
Step12:  *Bayesian Methods for Hackers( style
There is a very nice short online book called Probabilistic Programming and Bayesian Methods for Hackers; it features figures created with Matplotlib, and uses a nice set of rc parameters to create a consistent and visually-appealing style throughout the book.
This style is reproduced in the bmh stylesheet
Step13:  Dark background
For figures used within presentations, it is often useful to have a dark rather than light background.
The dark_background style provides this
Step14:  Grayscale
Sometimes you might find yourself preparing figures for a print publication that does not accept color figures.
For this, the grayscale style, shown here, can be very useful
Step15:  Seaborn style
Matplotlib also has stylesheets inspired by the Seaborn library (discussed more fully in Visualization With Seaborn).
As we will see, these styles are loaded automatically when Seaborn is imported into a notebook.
I've found these settings to be very nice, and tend to use them as defaults in my own data exploration.
<ASSISTANT_TASK:>
Python Code:
import matplotlib.pyplot as plt
plt.style.use('classic')
import numpy as np
%matplotlib inline
x = np.random.randn(1000)
plt.hist(x);
Explanation: <!--BOOK_INFORMATION-->
<img align="left" style="padding-right:10px;" src="figures/PDSH-cover-small.png">
This notebook contains an excerpt from the Python Data Science Handbook by Jake VanderPlas; the content is available on GitHub.
The text is released under the CC-BY-NC-ND license, and code is released under the MIT license. If you find this content useful, please consider supporting the work by buying the book!
No changes were made to the contents of this notebook from the original.
<!--NAVIGATION-->
< Customizing Ticks | Contents | Three-Dimensional Plotting in Matplotlib >
Customizing Matplotlib: Configurations and Stylesheets
Matplotlib's default plot settings are often the subject of complaint among its users.
While much is slated to change in the 2.0 Matplotlib release in late 2016, the ability to customize default settings helps bring the package inline with your own aesthetic preferences.
Here we'll walk through some of Matplotlib's runtime configuration (rc) options, and take a look at the newer stylesheets feature, which contains some nice sets of default configurations.
Plot Customization by Hand
Through this chapter, we've seen how it is possible to tweak individual plot settings to end up with something that looks a little bit nicer than the default.
It's possible to do these customizations for each individual plot.
For example, here is a fairly drab default histogram:
End of explanation
# use a gray background
ax = plt.axes(axisbg='#E6E6E6')
ax.set_axisbelow(True)
# draw solid white grid lines
plt.grid(color='w', linestyle='solid')
# hide axis spines
for spine in ax.spines.values():
    spine.set_visible(False)
    
# hide top and right ticks
ax.xaxis.tick_bottom()
ax.yaxis.tick_left()
# lighten ticks and labels
ax.tick_params(colors='gray', direction='out')
for tick in ax.get_xticklabels():
    tick.set_color('gray')
for tick in ax.get_yticklabels():
    tick.set_color('gray')
    
# control face and edge color of histogram
ax.hist(x, edgecolor='#E6E6E6', color='#EE6666');
Explanation: We can adjust this by hand to make it a much more visually pleasing plot:
End of explanation
IPython_default = plt.rcParams.copy()
Explanation: This looks better, and you may recognize the look as inspired by the look of the R language's ggplot visualization package.
But this took a whole lot of effort!
We definitely do not want to have to do all that tweaking each time we create a plot.
Fortunately, there is a way to adjust these defaults once in a way that will work for all plots.
Changing the Defaults: rcParams
Each time Matplotlib loads, it defines a runtime configuration (rc) containing the default styles for every plot element you create.
This configuration can be adjusted at any time using the plt.rc convenience routine.
Let's see what it looks like to modify the rc parameters so that our default plot will look similar to what we did before.
We'll start by saving a copy of the current rcParams dictionary, so we can easily reset these changes in the current session:
End of explanation
from matplotlib import cycler
colors = cycler('color',
                ['#EE6666', '#3388BB', '#9988DD',
                 '#EECC55', '#88BB44', '#FFBBBB'])
plt.rc('axes', facecolor='#E6E6E6', edgecolor='none',
       axisbelow=True, grid=True, prop_cycle=colors)
plt.rc('grid', color='w', linestyle='solid')
plt.rc('xtick', direction='out', color='gray')
plt.rc('ytick', direction='out', color='gray')
plt.rc('patch', edgecolor='#E6E6E6')
plt.rc('lines', linewidth=2)
Explanation: Now we can use the plt.rc function to change some of these settings:
End of explanation
plt.hist(x);
Explanation: With these settings defined, we can now create a plot and see our settings in action:
End of explanation
for i in range(4):
    plt.plot(np.random.rand(10))
Explanation: Let's see what simple line plots look like with these rc parameters:
End of explanation
plt.style.available[:5]
Explanation: I find this much more aesthetically pleasing than the default styling.
If you disagree with my aesthetic sense, the good news is that you can adjust the rc parameters to suit your own tastes!
These settings can be saved in a .matplotlibrc file, which you can read about in the Matplotlib documentation.
That said, I prefer to customize Matplotlib using its stylesheets instead.
Stylesheets
The version 1.4 release of Matplotlib in August 2014 added a very convenient style module, which includes a number of new default stylesheets, as well as the ability to create and package your own styles. These stylesheets are formatted similarly to the .matplotlibrc files mentioned earlier, but must be named with a .mplstyle extension.
Even if you don't create your own style, the stylesheets included by default are extremely useful.
The available styles are listed in plt.style.available—here I'll list only the first five for brevity:
End of explanation
def hist_and_lines():
    np.random.seed(0)
    fig, ax = plt.subplots(1, 2, figsize=(11, 4))
    ax[0].hist(np.random.randn(1000))
    for i in range(3):
        ax[1].plot(np.random.rand(10))
    ax[1].legend(['a', 'b', 'c'], loc='lower left')
Explanation: The basic way to switch to a stylesheet is to call
python
plt.style.use('stylename')
But keep in mind that this will change the style for the rest of the session!
Alternatively, you can use the style context manager, which sets a style temporarily:
python
with plt.style.context('stylename'):
    make_a_plot()
Let's create a function that will make two basic types of plot:
End of explanation
# reset rcParams
plt.rcParams.update(IPython_default);
Explanation: We'll use this to explore how these plots look using the various built-in styles.
Default style
The default style is what we've been seeing so far throughout the book; we'll start with that.
First, let's reset our runtime configuration to the notebook default:
End of explanation
hist_and_lines()
Explanation: Now let's see how it looks:
End of explanation
with plt.style.context('fivethirtyeight'):
    hist_and_lines()
Explanation: FiveThiryEight style
The fivethirtyeight style mimics the graphics found on the popular FiveThirtyEight website.
As you can see here, it is typified by bold colors, thick lines, and transparent axes:
End of explanation
with plt.style.context('ggplot'):
    hist_and_lines()
Explanation: ggplot
The ggplot package in the R language is a very popular visualization tool.
Matplotlib's ggplot style mimics the default styles from that package:
End of explanation
with plt.style.context('bmh'):
    hist_and_lines()
Explanation: *Bayesian Methods for Hackers( style
There is a very nice short online book called Probabilistic Programming and Bayesian Methods for Hackers; it features figures created with Matplotlib, and uses a nice set of rc parameters to create a consistent and visually-appealing style throughout the book.
This style is reproduced in the bmh stylesheet:
End of explanation
with plt.style.context('dark_background'):
    hist_and_lines()
Explanation: Dark background
For figures used within presentations, it is often useful to have a dark rather than light background.
The dark_background style provides this:
End of explanation
with plt.style.context('grayscale'):
    hist_and_lines()
Explanation: Grayscale
Sometimes you might find yourself preparing figures for a print publication that does not accept color figures.
For this, the grayscale style, shown here, can be very useful:
End of explanation
import seaborn
hist_and_lines()
Explanation: Seaborn style
Matplotlib also has stylesheets inspired by the Seaborn library (discussed more fully in Visualization With Seaborn).
As we will see, these styles are loaded automatically when Seaborn is imported into a notebook.
I've found these settings to be very nice, and tend to use them as defaults in my own data exploration.
End of explanation
<END_TASK>