Matplotlib常用图形绘制

Matplotlib绘制的常用图形包括散点图、线性图、柱状图、直方图、饼图、箱线图和子图。

1.散点图

散点图又称为散点分布图,是以利用坐标点(散点)的分布形态反映特征间的相关关系的一种图形。散点图的绘图函数为: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车次上车人数散点图')

2.线性图

线性图的绘图函数为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')

3.柱状图

柱状图的绘图函数为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')

4.直方图

直方图的绘图函数为hist(X,[可选项]),其中X表示横轴坐标数据列,可选项为绘图设置。

plt.figure(3)
plt.hist(y1)
plt.xlabel('上车人数')
plt.ylabel('频数')
plt.title('D02车次上车人数直方图')
plt.savefig('myfigure3')

5.饼图

饼图的绘制函数为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')

6.箱线图

箱线图是利用数据中的最小值、上分位数、中位数、下四分位数与最大值这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')

7.多图展示

在同一个绘图界面上,绘制不同类型的图像

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金融数据分析与挖掘实战中例题数据,数据附后

金融数据分析与挖掘实战 4.2 Matplotlib(二)相关推荐

  1. 金融数据分析与挖掘实战4.1 Matplotlib(一)

    数据可视化包Matplotlib Matplotlib是Python中一个二维绘图包,能够非常简单的实现数据可视化.Matplotlib最早由John Hunter于2002年启动开发,其目的是为了构 ...

  2. 金融数据分析余挖掘实战1.9-1.10补充

    # 1.9.2 有返回值的函数 def sumt(t): #求1一直加到t的和s = 0while t > 0:s = s + tt = t - 1return s s = sumt(30) # ...

  3. 金融数据分析与挖掘实战5.6-5.7

    # 5.6 支持向量机 #汽车评价数据,6个特征变量,1个分类标签,共1728条记录 #要求取1690条记录作为训练集,余下的作为测试集,计算预测准确率 import numpy as np impo ...

  4. 金融数据分析与挖掘实战练习2.10

    # 2.10矩阵及线性代数的运算 # 2.10.1 创建矩阵 import numpy as np mat1 = np.mat("1 2 3 ; 4 5 6 ; 7 8 9") p ...

  5. 金融数据分析与挖掘实战练习2.5-2.9

    # 2.5.1数组切片 #满足条件的切片 import numpy as np D = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16] ...

  6. 金融数据分析与挖掘实战练习2.1-2.4

    #逻辑运算符 3 and 4 4 3 and 5 and 8 # 如果用and连接多个正整数,那么将显示最后的那个 8 3 and 8 and 5 5 3 or 5 or 8 #如果用or连接多个正整 ...

  7. 金融数据分析与挖掘实战练习-1.9

    # if while 的综合运用 # 猜数字 #请猜我心中的那个数字(假如是10) s = input("请猜测我心中记住的那个数字是:") guess = int(s) if g ...

  8. 金融数据分析与挖掘实战1.7-1.8

    #1.7练习:如果成绩为60分以下,记为E,60-70 记为D,70-80 记为C ,80-90记为B, # 90-100记为A,某个同学成绩为75分,请设计一个if语句打印输出结果 #采用if语句进 ...

  9. 金融数据分析与挖掘实战1.5.2-1.5.3

    # 列表的元素排序 L1 = [1,3,2,6,8,4,3,9,7] L1.sort() print(L1) [1, 2, 3, 3, 4, 6, 7, 8, 9] L1[3] = 5 #把L1列表中 ...

最新文章

  1. Atitit.auto complete 自动完成控件的实现总结
  2. (NO.00003)iOS游戏简单的机器人投射游戏成形记(二)
  3. redis源码剖析(十四)—— dump.rdb文件分析工具
  4. SQL Server 不同数据库导入指定数据解决方案
  5. Redis Sentinel 源码:Redis的高可用模型分析
  6. 【Elasticsearch】Elasticsearch中的相似度评分介绍
  7. 通过连接池无法连接mysql_连接池无法链接数据库
  8. 工具,帮助我们更高效的工作
  9. asp 文本转时间_ASP.NET Core界面开发,DevExpress v19.2增强富文本编辑器功能
  10. Context Encoder论文及代码解读
  11. java源程序文件扩展名_JAVA源代码的扩展名为( )
  12. Eterm系统出-航空公司大系统-PID放大软件-IBE查询接口 QQ 799670351 15075679773
  13. 研大考研:2015考研政治认识论知识点
  14. 如何搭建一个会员网站?零基础用WordPress做一个会员网站视频教程
  15. 2017国培计算机研修计划,2017年国培计划个人研修计划
  16. yum报Exiting on user cancel
  17. 【第3版emWin教程】第55章 emWin6.x按钮Button控件自定义回调函数,实现各种按钮效果
  18. B端产品运营:获客渠道和方法
  19. 计算机中心那些事(四),计算机软考的那些事儿!
  20. c语言字母分别代表的意思,C语言中%c,%s分别代表什么意思? 在C语言中c% 和 d% 是表示什么意思?...

热门文章

  1. Ajax学习总结(1)——Ajax实例讲解与技术原理
  2. 怎么做圆形二维码_圆形吊顶怎么做?装修网盘点圆形吊顶安装注意事项
  3. 微软取消Windows10强制更新
  4. 高项信息系统项目管理师考试大纲——重点知识
  5. Java ConcurrentHashMap 最佳实践
  6. HTTP协议:GET请求
  7. json学习之三:JSONArray的应用
  8. 比较下OceanBase的选举协议和Raft的选举协议的区别
  9. 利用Xapian构建自己的搜索引擎
  10. list转数组array[]