常用图表的绘制
目录
- 绘制折线图
- 绘制柱形图
- 绘制直方图
- 绘制饼形图
- 绘制散点图
- 绘制面积图
- 绘制热力图
- 绘制箱形图
- 绘制3D图
- 绘制多个子图表
- 图表保存
准备工作
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图
以后再说。
绘制多个子图
- 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])
|
- 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])
|
- 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')