赞
踩
Matplotlib绘制的常用图形包括散点图、线性图、柱状图、直方图、饼图、箱线图和子图。
散点图又称为散点分布图,是以利用坐标点(散点)的分布形态反映特征间的相关关系的一种图形。散点图的绘图函数为:scatter(x, y, [可选项])。其中x表示横轴坐标数据列,y表示纵轴坐标数据列,可选项包含颜色、透明度等。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
path='一、车次上车人数统计表.xlsx';
data=pd.read_excel(path);
tb=data.loc[data['车次'] == 'D02',['日期','上车人数']].sort_values('日期');
x=np.arange(1,len(tb.iloc[:,0])+1)
y1=tb.iloc[:,1]
plt.rcParams['font.sans-serif'] = 'SimHei' # 设置字体为SimHei
plt.scatter(x,y1)
plt.xlabel('日期')
plt.ylabel('上车人数')
plt.xticks([1,5,10,15,20,24], tb['日期'].values[[0,4,9,14,19,23]], rotation = 45)
plt.title('D02车次上车人数散点图')
Text(0.5,1,'D02车次上车人数散点图')
线性图的绘图函数为plot(X,Y,[可选项]),其中X表示横轴坐标数据列,Y表示纵轴坐标数据列,可选项为绘图设置,包括图形类型:散点图、虚线图、实线图等;线条颜色:红、黄、蓝、绿等;数据点形状:星型、圆圈、三角形等。可选项一些示例说明如下:
r*-- 表示数据点为星型,图形类型为虚线图,线条颜色为红色
b*-- 表示数据点为星型,图形类型为虚线图,线条颜色为蓝色
bo 表示数据点为圆圈,图形类型为实线图(默认),线条颜色为蓝色
. 表示散点图
更多的设置说明及plot函数的使用方法,可以通过help()函数查看系统帮助
#读取数据 path='一、车次上车人数统计表.xlsx'; data=pd.read_excel(path); #筛选数据 tb=data.loc[data['车次'] == 'D02',['日期','上车人数']]; tb=tb.sort_values('日期'); tb1=data.loc[data['车次'] == 'D03',['日期','上车人数']]; tb1=tb1.sort_values('日期'); #构造绘图所需的横轴数据列和纵轴数据列 x=np.arange(1,len(tb.iloc[:,0])+1) y1=tb.iloc[:,1] y2=tb1.iloc[:,1] # 定义绘图figure界面 plt.figure(1) #在figure界面上绘制两个线性图 plt.rcParams['font.sans-serif'] = 'SimHei' # 设置字体为SimHei plt.plot(x,y1,'r*--') #红色“*”号连续图,绘制D02车次 plt.plot(x,y2,'b*--') #蓝色“*”号连续图,绘制D03车次 # 对横轴和纵轴打上中文标签 plt.xlabel('日期') plt.ylabel('上车人数') #定义图像的标题 plt.title('上车人数走势图') #定义两个连续图的区别标签 plt.legend(['D02','D03']) plt.xticks([1,5,10,15,20,24], tb['日期'].values[[0,4,9,14,19,23]], rotation = 45) #保存图片,命名为myfigure1。 plt.savefig('myfigure1')
柱状图的绘图函数为bar(x,y,[可选项]),其中X表示横轴坐标数据列,Y表示纵轴坐标数据列,可选项为绘图设置。
plt.figure(2)
plt.bar(x,y1)
plt.xlabel('日期')
plt.ylabel('上车人数')
plt.title('D02车次上车人数柱状图')
plt.xticks([1,5,10,15,20,24], tb['日期'].values[[0,4,9,14,19,23]], rotation = 45)
plt.savefig('myfigure2')
直方图的绘图函数为hist(X,[可选项]),其中X表示横轴坐标数据列,可选项为绘图设置。
plt.figure(3)
plt.hist(y1)
plt.xlabel('上车人数')
plt.ylabel('频数')
plt.title('D02车次上车人数直方图')
plt.savefig('myfigure3')
饼图的绘制函数为pie(X,Y,[可选项]),其中X表示待绘制的数据序列,Y表示对应的标签,可选项表示绘图设置。这里常用的绘图设置为百分比的小数位,可以通过autopct属性类设置。
plt.figure(4)
# 1.计算D02~D06车次同期的上车人数总和,并用list1来保存其结果
D=data.iloc[:,0]
D=list(D.unique()) #车次号D02~D06
list1=[] #预定义每个车次的上车人数列表
for d in D:
dt=data.loc[data['车次'] == d,['上车人数']]
s=dt.sum()
list1.append(s['上车人数']) #或者s[0]
# 2.绘制饼图
plt.pie(list1,labels=D,autopct='%1.2f%%') #绘制饼图,百分比保留小数点后两位
plt.title('各车次上车人数百分比饼图')
plt.savefig('myfigure4')
箱线图是利用数据中的最小值、上分位数、中位数、下四分位数与最大值这5个统计量来描述连续型特征变量的一种方法。它也可以粗略地看出数据是否具有对称性,分布的分散程度等信息,特别可以用于对几个样本的比较。
plt.figure(5)
plt.boxplot([y1.values,y2.values])
plt.xticks([1,2], ['D02','D03'], rotation = 0)
plt.title('D02、D03车次上车人数箱线图')
plt.ylabel('上车人数')
plt.xlabel('车次')
plt.savefig('myfigure5')
在同一个绘图界面上,绘制不同类型的图像
import pandas as pd import numpy as np import matplotlib.pyplot as plt #导入绘图库中的pyplot模块,并且简称为plt。 #读取数据 path='一、车次上车人数统计表.xlsx'; data=pd.read_excel(path); #筛选数据 tb=data.loc[data['车次'] == 'D02',['日期','上车人数']]; tb=tb.sort_values('日期'); tb1=data.loc[data['车次'] == 'D03',['日期','上车人数']]; tb1=tb1.sort_values('日期'); #构造绘图所需的横轴数据列和纵轴数据列 x=np.arange(1,len(tb.iloc[:,0])+1) y1=tb.iloc[:,1] y2=tb1.iloc[:,1] plt.rcParams['font.sans-serif'] = 'SimHei' # 设置字体为SimHei plt.figure('子图') plt.figure(figsize=(10,8)) plt.subplot(3,2,1) plt.scatter(x,y1) plt.xlabel('日期') plt.ylabel('上车人数') plt.xticks([1,5,10,15,20,24], tb['日期'].values[[0,4,9,14,19,23]], rotation = 45) plt.title('D02车次上车人数散点图') plt.subplot(3,2,2) plt.plot(x,y1,'r*--') plt.plot(x,y2,'b*--') plt.xlabel('日期') plt.ylabel('上车人数') plt.title('上车人数走势图') plt.legend(['D02','D03']) plt.xticks([1,5,10,15,20,24], tb['日期'].values[[0,4,9,14,19,23]], rotation = 45) plt.subplot(3,2,3) plt.bar(x,y1) plt.xlabel('日期') plt.ylabel('上车人数') plt.title('D02车次上车人数柱状图') plt.xticks([1,5,10,15,20,24], tb['日期'].values[[0,4,9,14,19,23]], rotation = 45) plt.subplot(3,2,4) plt.hist(y1) plt.xlabel('上车人数') plt.ylabel('频数') plt.title('D02车次上车人数直方图') plt.subplot(3,2,5) D=data.iloc[:,0] D=list(D.unique()) #车次号D02~D06 list1=[] #预定义每个车次的上车人数列表 for d in D: dt=data.loc[data['车次'] == d,['上车人数']] s=dt.sum() list1.append(s['上车人数']) #或者s[0] plt.pie(list1,labels=D,autopct='%1.2f%%') #绘制饼图,百分比保留小数点后两位 plt.title('各车次上车人数百分比饼图') plt.subplot(3,2,6) plt.boxplot([y1.values,y2.values]) plt.xticks([1,2], ['D02','D03'], rotation = 0) plt.title('D02、D03车次上车人数箱线图') plt.ylabel('上车人数') plt.xlabel('车次') plt.tight_layout() plt.savefig('子图')
<Figure size 432x288 with 0 Axes>
本节所使用数据为人民邮电出版社Python金融数据分析与挖掘实战中例题数据,数据附后
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。