2.2.3. Plotting data with matplotlib
¶
matplotlib
is one of the simplest and popular plotting libraries for Python. The following example which produces the line plot shown below illustrates the basic functionality of matplotlib
:
y0 = numpy.sin(x)
y1 = numpy.cos(x)
line0, = axes[0].plot(x, y0, label='sin(x)')
line1, = axes[1].plot(x, y1, label='cos(x)')
# set line color, style
line0.set_color((1, 0, 0)) # set color to red
line0.set_linewidth(2.)
line1.set_color((0, 1, 0)) # set color to green
line1.set_linewidth(2.)
# set axes limits
axes[0].set_xlim([0, numpy.pi * 2])
axes[0].set_ylim([-1, 1])
axes[1].set_xlim([0, numpy.pi * 2])
axes[1].set_ylim([-1, 1])
# set axes ticks
axes[0].set_xticks([0, numpy.pi / 2, numpy.pi, numpy.pi * 3 / 2, numpy.pi * 2])
axes[0].set_yticks([-1, -0.5, 0, 0.5, 1])
axes[1].set_xticks([0, numpy.pi / 2, numpy.pi, numpy.pi * 3 / 2, numpy.pi * 2])
axes[1].set_yticks([-1, -0.5, 0, 0.5, 1])
# add title and axis labels
axes[0].set_title(r'$\sin{x}$')
axes[0].set_xlabel('X')
axes[0].set_ylabel('Y')
axes[1].set_title(r'$\cos{x}$')
axes[1].set_xlabel('X')
axes[1].set_ylabel('Y')
# add annotations
line0.set_markevery([50])
line0.set_marker('o')
axes[0].text(numpy.pi, 0, r'$(\pi, 0)$')
# turn off axis border
axes[0].spines['top'].set_visible(False)
axes[0].spines['right'].set_visible(False)
axes[1].spines['top'].set_visible(False)
axes[1].spines['right'].set_visible(False)
# turn on grid
axes[0].grid(True)
axes[1].grid(True)
# add legend
axes[0].legend()
axes[1].legend()
# display figure
# fig.show()
# save figure
png_filename = os.path.join(os.path.dirname(__file__), '../../../docs/concepts_skills/software_engineering/matplotlib-example.png')
fig.savefig(png_filename, transparent=True, bbox_inches='tight') # save in png format
pdf_filename = os.path.join(os.path.dirname(__file__), '../../../docs/concepts_skills/software_engineering/matplotlib-example.pdf')
fig.savefig(pdf_filename, transparent=True, bbox_inches='tight') # save in pdf format
os.remove(pdf_filename)
2.2.3.1. Plot types¶
In addition to line plots, matplotlib
provides functions to create a wide range of plots
bar
: vertical bar plotbarh
: horizontal bar ploterrorbar
: plots lines with error barsfill
: filled polygonshist
: 1-D histogramhist2d
: 2-D histogramscatter
: scatter plot
See the matplotlib documentation for a complete list of the available plot types.