part of Course 133 Navigating Matplotlib
Make your lines your own
Occasionally you'll want a plot to show something other than a single solid thin blue line. Here are some ways you can tweak it.
First we need to set up.
import matplotlib matplotlib.use("agg") import matplotlib.pyplot as plt import numpy as np
Select the "agg" backend and make our imports, as described here.
x = np.linspace(-6, 6, 500) y = np.sinc(x)
Create a curve to work with.
fig = plt.figure() ax = fig.gca()
Create a new Figure and get the Axes, like we did in this example. Now we're ready to go to work.
Change the width
ax.plot(x, y, linewidth=15)
linewidth argument, you can set the width of
your line, in points. For comparison, the default is 1.
Change the color
ax.plot(x, y, color="pink", linewidth=5)
You can also specify the color using the
There are several ways to specify colors, and covering all of them deserves its own tutorial, but the simplest way is to call out the (English) name of a color. Matplotlib can recognize a shocking variety of them. Here are some samples.
Change the style
Another common manipulation is to change the style of a line from solid to dashed or dotted.
ax.plot(x, y, linewidth=2, linestyle="--")
linestyle argument controls this.
You can choose from
- "--", dashed
- ":", dotted
- "-.", dash-dotted
Add more lines
Another common trick is to put more than one line on a plot.
ax.plot(x, y, linewidth=4) ax.plot(x, y + .1, linewidth=2) ax.plot(x, y + .2, linewidth=1) ax.plot(x, y + .3, linewidth=.5) ax.plot(x, y + .4, linewidth=.2)
Luckily, this is as easy as repeatedly calling
plot(). You can do this as many times as you want.
I've had thousands of lines on a single plot before.
You have to wait a little while for everything to draw, but
it gets there eventually.
Style line ends and joins
Occasionally you want to really get in and control exactly how your lines look. The styling of the tips of the lines (capstyle) and the bends in the lines (joinstyle) let you do this.
ax.plot(x, y, solid_capstyle="butt", solid_joinstyle="miter") ax.plot(x, y, solid_capstyle="round", solid_joinstyle="round") ax.plot(x, y, solid_capstyle="projecting", solid_joinstyle="bevel")
options in the snippet above give the varying effects seen
in this figure.
You can also make use of the
with broken lines. They take the same sets of arguments.
There are lots of other fine details of lines you can control. If you're curious, check out the API.
Want even more control of your plot? Come take a look at the full set of tutorials.