mpl绘图

常用图表的绘制

目录

  1. 绘制折线图
  2. 绘制柱形图
  3. 绘制直方图
  4. 绘制饼形图
  5. 绘制散点图
  6. 绘制面积图
  7. 绘制热力图
  8. 绘制箱形图
  9. 绘制3D图
  10. 绘制多个子图表
  11. 图表保存

    准备工作

1
2
3
4
5
6
7
8
import pandas as pd
import matplotlib.pyplot as plt

# 设置表格对齐
pd.set_option('display.unicode.east_asian_width', True)

# 解决中文乱码
plt.rcParams['font.sans-serif'] = ['SimHei']

绘制折线图

1
2
3
4
5
6
7
8
9
10
11
12
13
x = [1,2,3,4,5]

y_1 = [1,2,3,4,5]
y_2 = [2,2,3,1,5]
y_3 = [5,4,3,2,1]

plt.plot(x,y_1, label='y_1', linestyle='-')
plt.plot(x,y_2, label='y_2', linestyle='-.')
plt.plot(x,y_3, label='y_3', linestyle=':')

plt.title('y1y2y3')
plt.legend(['y_1','y_2','y_3'])
plt.show

绘制柱形图

1
plt.bar(x, height=y, width=0.8, bottom=None, *, align='center', data=None, **kwargs)
参数 含义
x x 轴数据,可以是列表,可以是序列
height = y y轴数据
width = 0.8 直方图宽度
bottom = None 柱形图的 y 坐标,可选参数, 标量或数组
“*” 本身不是参数,表示其后的参数为关键字参数
align = ‘center’ 对齐方式
data = None 一般不用
**kwargs 包含多个参数,如下
color 颜色
alpha 透明度[0,1]
label 标签

绘制直方图

统计一组数据中,落在各个统计区间的数据的数量。

1
2
3
plt.hist(x, bins=None, range=None, density=None, bottom=None, 
histtype='bar', align='mid', log=False, color=None,
label=None, stacked=False, normed=None)
参数 含义
x x 轴数据
bins=None 统计数据的区间分布(直方图宽度)
range=None 元组类型,显示的区间
density=None 是否显示频率统计结果
bottom=None 直方图的y坐标
histtype=’bar’ 推荐默认值,不用管
align=’mid’ 推荐使用默认值,不用管
log=False y坐标是否选择指数刻度
color=None 颜色
facecolor 主体颜色
edgecolor 边缘颜色
label=None 标签
stacked=False 是否为堆积柱状图
normed=None 默认

绘制饼形图

1
2
3
4
plt.pie(x, explode=None, labels=None, autopct=None, pctdistance=0.6, 
shadow=False, labeldistance=1.1, satrtangle=None, radius=None,
counterclock=True, wedgeprops=None, textprops=None, center=(0,0),
frame=False, rotatelabels=False, hold=None, data=None)
参数 含义
x 每一块饼图的比列,如果sum(x)>1,会自动归一化处理
explode=None 每一块饼图与中心的距离,默认为0,多层饼图是会用到
labels=None 每一块饼图外侧显示的说明文字
autopct=None 设置饼图百分比的格式(format())
pctdistance=0.6 指定百分比的位置刻度,默认值为6
shadow=False 是否添加阴影
labeldistance=1.1 label的绘制位置,默认1.1在饼图外侧,小于1时在饼图内侧
satrtangle=None 起始绘制角度,默认值
radius=None 饼图半径,默认为1
counterclock=True 指定指针方向,默认值逆时针
wedgeprops=None 字典类型,传递参数
textprops=None 设置标签和比例文字的格式
center=(0,0) 浮点类型的列表
frame=False 是否显示轴框架
rotatelabels=False 是否旋转每个标签到指定角度
hold=None 没有解释,默认就好
data=None 默认

绘制散点图

散点图主要用来查看数据的分布情况或相关性,一般用在线性回归分析中,查看数据点在坐标系平面上的分布情况。散点图表示因变量随自变量变化而变化的大致趋势,据此可以选择合适的函数对数据点进行拟合。

1
2
3
plt.scatter(x, y, s=None, marker=None, cmap=None, norm=None, 
vmin=None, vmax=None, alpha=None, linewidths=None,
edgecolors=None, data= n one , data=None, **kwargs)

一般而言,使用默认值就好。

plt.scatter(x,y)

绘制面积图

面积图用于体现数量随时间而变化的程度,也可以引起人们对总值趋势的注意。

1
plt.stackplot(x,*args, data=None, **kwargs)

一般出现**kwargs就是可以设置颜色,形状等关键参数。

主要还是使用默认,或者简单的添加颜色设置等。

plt.stackplot(x,y)

plt.stackplot(x, y1, y2, y3, y4, colors=['r','g','k','b'])

绘制热力图

热力图是通过密度函数进行可视化用于表示地图中的点的密度的热图。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
X= [[1,2],[30,4],[5,6],[7,8],[9,19]]
# 列表中每一个小列表代表一条记录,也代表热力图有几行;
# 每个小列表中有几个数据代表热力图有几列;
# 列表中数值越大,颜色越明显。
plt.imshow(X)
df = pd.read_excel('F:/project2_pandas/Python数据分析从入门到精通/MR/Code/05/29/data1.xls', sheet_name='高二一班')

X = df.loc[:,'语文':'生物'].values

name = df['姓名']

plt.imshow(X)

plt.xticks(range(0,6,1),labels=['语文','数学','英语','物理','化学','生物'])
plt.yticks(range(0,12,1), labels=name)

plt.colorbar()

plt.title('高二一班学生成绩热力图')

绘制箱形图

等到需要用的时候再学吧。

1
2
3
4
5
x1 = [1,2,3,5,7,9]
x2 = [10,22,13,15,8,19]
x3 = [18,31,18,19,14,29]

plt.boxplot([x1,x2,x3])

绘制3D图

以后再说。

绘制多个子图

  1. subplot()函数

plt.subplot(a,b,c)

将画布分为a行b列共a*b个小画布,并且在第c个画布上开始绘图。

1
2
3
4
5
6
7
8
plt.subplot(2,2,1)
plt.plot([1,2,3,4,5])

plt.subplot(2,2,2)
plt.plot([1,2,3,4,5],[23,45,32,12,10])

plt.subplot(2,1,2)
plt.bar([1,2,3,4],[12,34,45,23])
  1. subplots()函数

figure, axes = plt.subplots(2, 2)

通过subplots()将画布划分为几个小画布,并赋值到axes上

使用axes[a,b].plot() 代替 plt.plot()

1
2
3
4
5
6
7
8
figure, axes = plt.subplots(2, 2)
axes[0, 0].plot([1,1,1,11])

axes[0, 1].plot([1,2,3,4],[2,4,5,6])

axes[1, 0].bar([1,2,3],[11,12,16])

axes[1, 1].pie([12,23,43,55])
  1. add_subplot()函数
1
2
3
4
5
6
7
8
fig = plt.figure()

ax1 = fig.add_subplot(2,3,1)
ax2 = fig.add_subplot(2,3,2)
ax3 = fig.add_subplot(2,3,3)
ax4 = fig.add_subplot(2,3,4)
ax5 = fig.add_subplot(2,3,5)
ax6 = fig.add_subplot(2,3,6)

保存图表

plt.savefig('image.png')


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!