一、简介

以下引用自百度百科

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简单示例的更多相关文章

  1. matplotlib小示例

    matplotlib 画廊  http://matplotlib.org/gallery.html import numpy as np import matplotlib.pyplot as plt ...

  2. Linux下的C Socket编程 -- server端的简单示例

    Linux下的C Socket编程(三) server端的简单示例 经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上面去. 绑定socket ...

  3. C# 构建XML(简单示例)

    C# 构建XML的简单示例: var pars = new Dictionary<string, string> { {"url","https://www. ...

  4. 根据juery CSS点击一个标签弹出一个遮罩层的简单示例

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  5. ACEXML解析XML文件——简单示例程序

    掌握了ACMXML库解析XML文件的方法后,下面来实现一个比较完整的程序. 定义基本结构 xml文件格式如下 <?xml version="1.0"?> <roo ...

  6. demo工程的清单文件及activity中api代码简单示例

    第一步注册一个账户,并创建一个应用.获取app ID与 app Key. 第二步下载sdk 第三步新建工程,修改清单文件,导入相关的sdk文件及调用相应的api搞定. 3.1 修改清单文件,主要是加入 ...

  7. spring-servlet.xml简单示例

    spring-servlet.xml简单示例 某个项目中的spring-servlet.xml 记下来以后研究用 <!-- springMVC简单配置 --> <?xml versi ...

  8. SignalR 简单示例

    一.什么是 SignalR ASP.NET SignalR is a library for ASP.NET developers that simplifies the process of add ...

  9. Web API 简单示例

    一.RESTful和Web API Representational State Transfer (REST) is a software architecture style consisting ...

随机推荐

  1. 解决windows 10英文版操作系统中VS2017控制台程序打印中文乱码问题

    当您在windows 10英文版的操作系统中运行Vs2017控制台应用程序时,程序可能无法正常显示中文,中文都变成了乱码.这是由于大部分中文程序所使用的文字编码与Windows 英文系统的文字编码不同 ...

  2. 安装zabbix3.4的过程(一)

    目录 zabbix服务端安装(centos7.4) zabbix客户端安装 (centos6.9) 注释:本次安装为官方推荐的yum安装方式,如果需要编译安装,请查看下边的博文: 博文地址:https ...

  3. GNSS基础(持续更新)

    1.整周模糊度成功率 可参考文献:GNSS整周模糊度概率特性 2.正太分布 见百度百科 https://baike.baidu.com/item/%E6%AD%A3%E6%80%81%E5%88%86 ...

  4. 【教程】【FLEX】#004 反射机制

    总结: 目前用到反射的主要有两个方法 1.  getDefinitionByName    //根据类名,返回对象(反射实例化对象) 2.  describeType                 ...

  5. 【原创】Apache ab结果参数详解

    解释如下: Server Software 服务器软件软件名称. Server Hostname 被测服务器的主机名. Server Port 被测试的Web服务器的监听端口. SSL/TLS Pro ...

  6. MySql+Memcached架构的问题

    Memcached采用客户端-服务器的架构,客户端和服务器端的通讯使用自定义的协议标准,只要满足协议格式要求,客户端Library可以用任何语言实现. Memcached服务器使用基于Slab的内存管 ...

  7. Golang reflect 反射

    反射的规则如下: 从接口值到反射对象的反射  从反射对象到接口值的反射  为了修改反射对象,其值必须可设置   -------------------------------------------- ...

  8. net mvc中实现记录用户登录信息(记住登录效果)

    现记录用户登录信息(记住登录效果) 本文讲述了使用cookies实现网站记住登录效果,效果如下: 主要实现方法,当用户选择记住登录时建立cookies保存用户名和用户密码,当用户登录不选择记住登录时, ...

  9. Python自动化之session反解案例

    session反解案例 from django.contrib.sessions.models import Session sess = Session.objects.get(pk='a92d67 ...

  10. Azure云 windows平台 搭建ftp服务器注意事项

    1.iis设置防火墙支持端口(1-65535自定义端口,一般3-5个都行) 2.客户端连接使用被动链接模式 3.endpoint终结点添加20,21,以及你自定义的防火墙支持端口. 4.本地防火墙添加 ...