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 ...
随机推荐
- (转)Matlab矩阵的简单操作
转自:http://blog.sina.com.cn/s/blog_6264e23a0100veeq.html
- 树&二叉树&&满二叉树&&完全二叉树&&完满二叉树
目录 树 二叉树 完美二叉树(又名满二叉树)(Perfect Binary Tree) 完全二叉树(Complete Binary Tree) 完满二叉树(Full Binary Tree) 树 名称 ...
- 8年前,令我窒息的Java socket体验学习
本来已经放弃编程了,那时我发誓再也不去IT培训班了,如果找不到工作,我就去工地上打工.可心有不甘,老是惦记着,我不想天天面对生产线,做一个丧失思考能力的操作工,可后来呀,还是走上了程序员之路...这么 ...
- jQuery事件处理
浏览器的事件模型 DOM第0级事件模型 Event实例 他的属性提供了关于当前正被处理的已触发事件的大量信息.这包括一些细节,比如在哪个元素上触发的事件.鼠标事件的坐标以及键盘事件中单击了哪个键. 事 ...
- linux centos 7.5下 源码编译安装 lua环境
lua 5.3.5 下载安装时发现缺少库 readline 需要添加依赖 yum search readline 看有哪些包 安装带有 devel 字样的 安装无 devel 的非开发包,通常不会自动 ...
- etcd 删除
vim /etc/sysconfig/flanneld FLANNEL_ETCD_ENDPOINTS="https://192.168.30.241:2379,https://192.168 ...
- virtualbox+vagrant学习-2(command cli)-27-vagrant connect命令
Connect 命令: vagrant connect NAME connect命令通过启用对共享环境的访问来补充share命令.你可以在“vagrant share”部分了解有关vagrant sh ...
- Vmware10组建局域网
Vmware10组建局域网很简单,特别是用Ubuntu16.04作为操作系统,基本上按照如下步骤来,是不会出现问题的. 1.首先,启动虚拟机,选择“编辑”->“虚拟网络编辑器” 2.改为桥接模式 ...
- R多线程并行计算
先上代码案例: 主要的操作: library(parallel);#加载并行计算包 cl <- makeCluster(8);# 初始化cpu集群 clusterEvalQ(cl,library ...
- SQLserver中取众位数的写法
取众位数:先按个数倒排序,再取第一条SELECT * FROM ( select a.billid,a.DemandVoltage,count(1) as RecordCount, Row_NUMBE ...