matplotlib 模块是最基本的 Python 模块,在它上面还有更加高级的 API 封装库,比如 seaborn 模块和pyechart 模块。所以,matplotlib 模块可以轻松的完成自定义图表的设置。
导入我们下面用到的相关的库和模块。
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
%matplotlib inline
import matplotlib.pyplot as plt
matplotlib绘制的图像在 figure对象中,通过figure() 函数可以创建一个新的figure,而它的参数figsize 可以设置图表的长宽比。下面,通过add_subplot() 函数创建子图。
fig = plt.figure(figsize=(10,6))
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
把三个ax对象都绘制图表。同时,采用的数据是之前用过的year年份跟gdp生产总值。
years = [1950, 1960,1970,1980,1990, 2000,2010]
gdp = [300.2, 543.3, 1075.9, 2826.5, 5979.6, 10289.7, 14958.3]
ax1.scatter(years, gdp)
ax2.plot(years, gdp)
ax3.bar(years, gdp)
看到这里,你会想:怎么定位其中的某一个图表呢?答案就在下面的代码中。
fig, axes = plt.subplots(2,2,figsize=(10,6))
axes[1,1].plot(years, gdp)
这里,新建一个两行两列布局的四个子图,并在第一行第一列的子图中绘制线形图。
注意:这里的行和列是从数字0开始计算的。
还有,可以通过subplots_adjust() 函数修改子图之间的间距。subplots_adjust() 函数具体的参数如下:
subplots_adjust(left=None, right=None, bottom=None, top=None, wspace=None, hspace=None)
下面指定子图的两个边距创建子图。
fig, axes=plt.subplots(2,2)
plt.subplots_adjust(wspace=0.3, hspace=0.3)
可以通过text() 函数设置文本注释。
data = [23,85, 72, 43, 52]
labels = ['A', 'B', 'C', 'D', 'E']
plt.xticks(range(len(data)), labels)
plt.xlabel('Class')
plt.ylabel('Amounts')
plt.title('Example')
plt.bar(range(len(data)), data)
for x,y in zip(range(len(data)), data):
plt.text(x,y,y,ha='center', va='bottom') # 文本注释
上面一串代码,需要注意的是 for 循环中的执行语句。text()函数中的第一和第二参数是注释的坐标(x,y),第三和第四个参数就是设置注释的相对位置了。
如果你觉得上面的代码设置很麻烦,你也可以直接使用内置的样式。这样,你只需要一行代码。
plt.style.use('ggplot')
注意:它的副作用就是样式会保留,你之后绘制的图表一样会使用这个样式。不过,你可以通过下面的代码把样式重新设置回默认的样式。
import matplotlib as mpl
mpl.rcParams.update(mpl.rcParamsDefault)
plt.plot(range(10))
matplotlib不能直接使用中文,需要指定字体,不然就会发生乱码的情况。
plt.rcParams['font.sans-serif'] = ['simhei']
plt.rcParams['axes.unicode_minus'] = False
plt.title('案列')