matplotlib简单示例
一、简介
以下引用自百度百科
Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形 。
通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。
二、流程
1. 明确要研究的问题
2. 选择需要使用什么图形(折线图、直方图……)来呈现
3. 准备相应的数据
4. 绘制图形和完善美化图形
在某些情况下,个人认为还有最后一点,是从图中可以得出什么结论。
以下只是简单的示例,就没有一定按照上面的流程。
三、简单示例
1.折线图
1.1 什么是折线图
以下引用自百度百科
折线图是排列在工作表的列或行中的数据可以绘制到折线图中。折线图可以显示随时间(根据常用比例设置)而变化的连续数据,因此非常适用于显示在相等时间间隔下数据的趋势。
简单来说,折线图可以反映事物的变化情况。
1.2 准备数据
数据来自国家数据,选取了1978年至2017年的研究生招生数和研究生毕业生数,下面只列举了部分数据。
2017年 | 2016年 | 2015年 | 2014年 | 2013年 | ... | |
---|---|---|---|---|---|---|
研究生招生数(万人) | 80.6103 | 66.7064 | 64.5055 | 62.1323 | 61.1381 | ... |
研究生毕业生数(万人) | 57.8045 | 56.3938 | 55.1522 | 53.5863 | 51.3626 | ... |
1.3 绘制完善图形
附上代码,看注释吧。
from matplotlib import pyplot as plt
from matplotlib import font_manager
# matplotlib默认不支持中文字符,设置中文字体,参数的值为系统字体路径
my_font = font_manager.FontProperties(fname=r"C:\Windows\Fonts\simsun.ttc")
# 需要绘制的数据
x = list(range(1978, 2018))
y_recruit = list(reversed(
[80.6103, 66.7064, 64.5055, 62.1323, 61.1381, 58.9673, 56.0168, 53.8177, 51.0953, 44.6422, 41.8612, 39.7925,
36.4831, 32.6286, 26.8925, 20.2611, 16.5197, 12.8484, 9.2225, 7.2508, 6.3749, 5.9398, 5.1053, 5.0864, 4.2145,
3.3439, 2.9679, 2.9649, 2.8569, 3.5645, 3.9017, 4.131, 4.6871, 2.3181, 1.5642, 1.108, 0.9363, 0.3616, 0.811,
1.0708]))
y_graduate = list(reversed(
[57.8045, 56.3938, 55.1522, 53.5863, 51.3626, 48.6455, 42.9994, 38.36, 37.1273, 34.4825, 31.1839, 25.5902, 18.9728,
15.0777, 11.1091, 8.0841, 6.7809, 5.8767, 5.467, 4.7077, 4.6539, 3.9652, 3.1877, 2.8047, 2.8214, 2.5692, 3.2537,
3.544, 3.7232, 4.0838, 2.7603, 1.695, 1.7004, 0.2756, 0.4497, 0.4058, 1.1669, 0.0476, 0.014, 0.0009]))
# 设置图形大小,dpi
plt.figure(figsize=(10,6.18),dpi=100)
# 绘制第一条折线
plt.plot(x,y_recruit,label="研究生招生数")
# 绘制第二条折线
plt.plot(x,y_graduate,
label="研究生毕业生数", # 图例显示内容
color="orange", # 线条颜色
linewidth=3, # 线宽
linestyle="--") # 线条样式
# 设置x轴刻度,rotation为旋转度数
plt.xticks(x[::2],rotation=45)
# 设置图例,prop为设置字体,fontsize为设置字体大小
plt.legend(prop=my_font,fontsize=12)
# 绘制网格,alpha为透明度
plt.grid(alpha=0.5)
# 添加描述信息,fontproperties为设置字体,fontsize为设置字体大小
plt.xlabel("年份",fontproperties=my_font,fontsize=12)
plt.ylabel("人数(万人)",fontproperties=my_font,fontsize=12)
plt.title("1978年至2017年研究生招生数和研究生毕业生数情况",fontproperties=my_font,fontsize=18)
# 显示图形
plt.show()
1.4 绘制图形结果
运行上述代码,结果如下。
2.条形图
2.1 什么是条形图
以下引用自百度百科
条形图(bar chart)是用宽度相同的条形的高度或长短来表示数据多少的图形。条形图可以横置或纵置,纵置时也称为柱形图(column chart)。此外,条形图有简单条形图、复式条形 图等形式。
简单来说,条形图可以直观地反映数据的大小。
2.2 准备数据
数据同样来自国家数据,选取了2009年、2010年和2011年各级各类学校数,具体数据如下。
2009 | 2010 | 2011 | |
---|---|---|---|
普通高等学校数(所) | 2305 | 2358 | 2409 |
普通中学学校数(所) | 70774 | 68881 | 67751 |
高中学校数(所) | 14607 | 14058 | 13688 |
初中学校数(所) | 56167 | 54823 | 54063 |
职业中学学校数(所) | 5805 | 5273 | 4856 |
普通小学学校数(所) | 280184 | 257410 | 241249 |
特殊教育学校学校数(所) | 1672 | 1706 | 1767 |
学前教育学校数(所) | 138209 | 150420 | 166750 |
2.3 绘制完善图形
代码如下:
x = ["普通高等学校数", "普通中学学校数","高中学校数",
"初中学校数","职业中学学校数","普通小学学校数",
"特殊教育学校数","学前教育学校数"]
y_09 = [2305,70774,14607,56167,5805,280184,1672,138209]
y_10 = [2358,68881,14058,54823,5273,257410,1706,150420]
y_11 = [2409,67751,13688,54063,4856,241249,1767,166750]
plt.figure(figsize=(10,6.18),dpi=100)
bar_width = 0.25
x_09 = list(range(len(x)))
x_10 = list(i + bar_width for i in range(len(x)))
x_11 = list(i + bar_width * 2 for i in range(len(x)))
plt.barh(x_09,y_09,height=bar_width,label="2009年")
plt.barh(x_10,y_10,height=bar_width,label="2010年")
plt.barh(x_11,y_11,height=bar_width,label="2011年")
plt.legend(prop=my_font, fontsize=12)
plt.grid(alpha=0.5,linestyle="--")
plt.yticks(x_10,x,fontproperties=my_font)
plt.xlabel("数量(所)",fontproperties=my_font,fontsize=12)
plt.title("2009年、2010年及2011年各级各类学校数情况",fontproperties=my_font,fontsize=18)
plt.show()
2.4 绘制图形结果
运行上述代码,结果如下。
3.直方图
3.1 什么是直方图
以下引用自百度百科
直方图(Histogram)又称质量分布图。是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据类型,纵轴表示分布情况。
为了构建直方图,第一步是将值的范围分段,即将整个值的范围分成一系列间隔,然后计算每个间隔中有多少值。 这些值通常被指定为连续的,不重叠的变量间隔。 间隔必须相邻,并且通常是(但不是必须的)相等的大小。
3.2 准备数据
数据选用上一篇随笔:爬取豆瓣电影信息中爬取到的电影的时长。去除无效数据后,从下图可以看出总共有2247条数据,最大值为170,最小值为3。
3.3 绘制完善图形
代码如下:
plt.figure(figsize=(10,6.18),dpi=100)
plt.hist(df["running_time"],range(0,171,10),color="#009900")
plt.xticks(range(0,171,10))
plt.yticks(range(0,650,50))
plt.grid(alpha=0.5,linestyle="--")
plt.xlabel("时长(分钟)",fontproperties=my_font,fontsize=12)
plt.ylabel("数量", fontproperties=my_font,fontsize=12)
plt.title("电影片长分布情况", fontproperties=my_font,fontsize=18)
plt.show()
3.4 绘制图形结果
运行上述代码,结果如下。
四、结语
- 本文简单举例介绍了matplotlib绘制折线图、条形图和直方图的方法,matplotlib很强大,可以绘制非常多的图形,可以参考https://matplotlib.org/gallery/index.html。
- 如果文中有错误的地方,希望大家指出,我会积极地学习改正。
- 最后,感谢大家的阅读!
开心一点,人间不值得
matplotlib简单示例的更多相关文章
- matplotlib小示例
matplotlib 画廊 http://matplotlib.org/gallery.html import numpy as np import matplotlib.pyplot as plt ...
- Linux下的C Socket编程 -- server端的简单示例
Linux下的C Socket编程(三) server端的简单示例 经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上面去. 绑定socket ...
- C# 构建XML(简单示例)
C# 构建XML的简单示例: var pars = new Dictionary<string, string> { {"url","https://www. ...
- 根据juery CSS点击一个标签弹出一个遮罩层的简单示例
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- ACEXML解析XML文件——简单示例程序
掌握了ACMXML库解析XML文件的方法后,下面来实现一个比较完整的程序. 定义基本结构 xml文件格式如下 <?xml version="1.0"?> <roo ...
- demo工程的清单文件及activity中api代码简单示例
第一步注册一个账户,并创建一个应用.获取app ID与 app Key. 第二步下载sdk 第三步新建工程,修改清单文件,导入相关的sdk文件及调用相应的api搞定. 3.1 修改清单文件,主要是加入 ...
- spring-servlet.xml简单示例
spring-servlet.xml简单示例 某个项目中的spring-servlet.xml 记下来以后研究用 <!-- springMVC简单配置 --> <?xml versi ...
- SignalR 简单示例
一.什么是 SignalR ASP.NET SignalR is a library for ASP.NET developers that simplifies the process of add ...
- Web API 简单示例
一.RESTful和Web API Representational State Transfer (REST) is a software architecture style consisting ...
随机推荐
- 微信小程序 取随机数
第一思路 如:现在要从50< . =<100内取一个随机数: ran.Next(1,50)生成的是1-50的随机数+50 结束 第二思路 Math.random()的取值范围是: 0&l ...
- sharepoint 2013 service pack 和 Hotfix 版本
方法1:Central Administration > System Settings > Manage servers in your farm (/_admin/FarmServer ...
- ZT Shell 排序
Shell 排序 分类: 算法 C 2008-09-17 11:02 1898人阅读 评论(4) 收藏 举报 shell语言c 刚才在CSDN的C语言板块看到了有人说Shell排序的问题,所以一起学习 ...
- kafka for Windows
1,保证,安装好java环境,zookeeper,并且运行zookeeper. 2,下载kafka,并解压到磁盘 下载链接http://mirrors.hust.edu.cn/apache/kafka ...
- RSA算法知识
摘自http://www.cfca.com.cn/zhishi/wz-012.htm RSA加密算法是最常用的非对称加密算法,CFCA在证书服务中离不了它.但是有不少新来的同事对它不太了解,恰好看到一 ...
- Day10 MVC
经典三层 表述层(表示层): 前台交互,调用后台 web 业务逻辑层: 处理业务 service 数据持久层: 与数据库之间进行交互 dao 面向对象原则 面 ...
- Day12 Java异常处理与程序调试
什么是异常? 不正常的,会影响程序的正常执行流程. 例如下面的程序 public static void main(String[] args) { TestDemo1 t = new TestDem ...
- Docker存储方式选型建议
转自:https://segmentfault.com/a/1190000007168476 第一部分 问题诊断 事情从一次实施项目说起,我们需要帮助客户将他们的应用容器化并在数人云平台上发布此应用. ...
- 【转】python中的对象拷贝
转自:https://www.cnblogs.com/bhlsheji/p/5352330.html python中.进行函数參数传递或者返回值时,假设是一般的变量,会拷贝传递.假设是列表或字典则是引 ...
- 【转】tomcat搭建本地服务器 实现apk更新下载
转自:http://www.kankanews.com/ICkengine/archives/121748.shtml 做apk的更新下载功能,测试的时候需要个服务器. 所以就选用 Apache To ...