Python数据分析23——matplotlib可视化(五)之自定义图表

matplotlib自定义图表

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)

Python数据分析23——matplotlib可视化(五)之自定义图表_第1张图片其中,每一个ax对象都代表一个子图。

图表布局

把三个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)

Python数据分析23——matplotlib可视化(五)之自定义图表_第2张图片
看到这里,你会想:怎么定位其中的某一个图表呢?答案就在下面的代码中。

fig, axes = plt.subplots(2,2,figsize=(10,6))
axes[1,1].plot(years, gdp)

这里,新建一个两行两列布局的四个子图,并在第一行第一列的子图中绘制线形图。
Python数据分析23——matplotlib可视化(五)之自定义图表_第3张图片
注意:这里的行和列是从数字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)

Python数据分析23——matplotlib可视化(五)之自定义图表_第4张图片

文本注解

可以通过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),第三和第四个参数就是设置注释的相对位置了。

Python数据分析23——matplotlib可视化(五)之自定义图表_第5张图片

样式

如果你觉得上面的代码设置很麻烦,你也可以直接使用内置的样式。这样,你只需要一行代码。

plt.style.use('ggplot')

Python数据分析23——matplotlib可视化(五)之自定义图表_第6张图片
注意:它的副作用就是样式会保留,你之后绘制的图表一样会使用这个样式。不过,你可以通过下面的代码把样式重新设置回默认的样式。

import matplotlib as mpl
mpl.rcParams.update(mpl.rcParamsDefault)
plt.plot(range(10))

Python数据分析23——matplotlib可视化(五)之自定义图表_第7张图片

字体

matplotlib不能直接使用中文,需要指定字体,不然就会发生乱码的情况。

plt.rcParams['font.sans-serif'] = ['simhei']
plt.rcParams['axes.unicode_minus'] = False
plt.title('案列')

Python数据分析23——matplotlib可视化(五)之自定义图表_第8张图片

你可能感兴趣的:(数据分析,matploylib,可视化,自定义图表,Python,数据分析)