数据可视化:绘图库-Matplotlib

为什么要绘图?
一个图表数据的直观分析,下面先看一组北京和上海上午十一点到十二点的气温变化数据:
数据:
这里我用一段代码生成北京和上海的一个小时内每分钟的温度如下:
import random
count = range(60)
beijing = [random.uniform(1, 5) for i in count]
shanghai = [random.uniform(15, 18) for j in count]
print(beijing, shanghai, sep="\n")
[4.682258972155654, 2.8230586446332167, 2.450505888387799, 1.4383830657623213, 4.795362075193044, 3.184769210211804, 1.439091690119596, 3.5609249801236955, 3.4885113738662286, 2.1146056890725324, 2.9165138853376438, 2.211880628416919, 3.695016745849695, 1.6172330610494017, 2.5790768982007974, 4.5527115658734, 3.000561904818762, 4.20469151405237, 2.0289823308819357, 3.968342007633831, 3.1813421437769, 1.9025262184736418, 3.417036156235188, 4.0814232023723065, 1.945837816600842, 1.6909398586886697, 2.4126670657437588, 1.6519738231235825, 4.3281221820507625, 4.697616440034521, 4.756429619594206, 1.1204128317983337, 2.090676163797101, 1.7318673198697896, 3.795378761971351, 1.0374684310591813, 2.9889001269098463, 1.5318489137675075, 4.6205659070999605, 1.2734764501171414, 2.6742088987928256, 3.536443581419823, 4.590131251281726, 3.1781226212667018, 1.2247133411073996, 1.7369816033298484, 4.271002451764155, 3.4271774575551217, 1.9760075940474384, 2.378683461923066, 3.5791335181987742, 3.325719318761416, 1.8486630346696753, 1.9122449641068164, 2.529541034681508, 2.023851174944782, 2.3583228647910075, 4.790108236801453, 4.140039080730356, 4.99798830315859]
[15.122129075579844, 15.879577975572008, 15.035726569929666, 15.893294569708305, 16.002467227820265, 16.787714033172335, 17.366975227034253, 15.667750039481238, 16.41462791295173, 15.677768138305618, 17.46585129267643, 17.861988214754977, 17.40963254378508, 17.290022855686345, 17.45908515010516, 16.278827844796886, 16.786342518559795, 15.272482213494019, 17.253903423018613, 15.464507305329708, 16.289957025480486, 16.154116453864134, 16.924294302666414, 16.875591142517344, 16.523762853475706, 15.882846858798066, 16.898557688850474, 15.363868671729227, 15.887789300864538, 15.47450277735131, 17.970830884249153, 15.714635006997199, 17.70772732429814, 16.682347586671032, 17.659520223295083, 15.118794086350158, 16.04760954103859, 16.210034399071322, 17.123877446773825, 15.074208712661013, 17.886987363488988, 16.868377051525982, 17.613617091503684, 16.599739570317134, 17.81283406522032, 17.84260926481712, 15.816859283411688, 16.399852279316754, 17.084817791485033, 15.613392114739858, 17.376518611288745, 16.30361700419597, 17.62995150886316, 15.508695315520779, 16.97412784376617, 15.778717980885249, 17.791168741254666, 15.097728468404277, 15.955208236765792, 15.315090102937274]
很夸张, 这就是北京和上海两地的温度,这么多数据!
下面我把它生成图像:
通过这段代码生成可视化图像:
# 导入模块
import matplotlib.pyplot as plt
import random
# 创建画布
plt.figure(figsize=(15, 8), dpi=100)
# 准备数据
count = range(60)
temperature_beijing = [random.uniform(1, 3) for i in count]
temperature_shanghai = [random.uniform(15, 18) for i in count]
x_time = ["11h:{:0>2}m".format(i) for i in count[::5]]
y_temp = ["{}°C".format(i) for i in count[:40:5]]
x_label = "time"
y_label = "temperature"
title = "beijing and shanghai temperature changing list"
# 图像层,动笔画
plt.plot([i for i in count],
temperature_beijing,
color="b", label="beijing")
plt.plot([i for i in count],
temperature_shanghai,
color="r", label="shanghai")
# 图例层
plt.legend() # 显示图像层的label
plt.xticks(count[::5], x_time) # 格式化x轴坐标
plt.yticks(count[:40:5], y_temp) # 格式化y周坐标
plt.xlabel(x_label) # x轴图例
plt.ylabel(y_label) # y轴图例
plt.title(title) # 标题
plt.grid(True, linestyle="--", alpha=0.5) # 网格
plt.show() # 显示图形并释放内存

呐,这就是上面数据生成的北京和上海两地的温度变化图,这样就很直观了,能够让我们清晰明了分析。
matplotlib介绍。
- Matplot是目前最流行的Python二维底层绘图库,主要用来做数据可视化图表绘制;
- 名字的由来,首先是模仿MATLAB构建,其次mat可能是matrix的缩写,矩阵的意思(正好对应了matplotlib的主要功能,画的都是二维的),当然有部大火的老电影名字也叫matrix(重温了经典,不过昨天的攀登者同样真的赞!),接着plot的意思就是画的意思了, lib就是library图书馆库的一些意思;
- matplotlib可以支持所有的2D作图还有部分的3D作图;
- 图像的质量可以达到印刷质量(主要原因应该是在生成画布的时候可以设定dpi),这里科普一下dpi,所谓的dpi就是dot per inch,即每英尺上的点的数量了,所以为什么dpi越高越清晰了。
- 官方的一些示例图以及源代码, 点击左边的蓝色字体就可以转达了。
第一步:载入Matplotlib(通俗讲就是导库)
这里要了解一下,我们主要使用Matplotlib下面的pyplot,所以我们只需要从Matplotlib中导入pyplot就可以了。
import matplotlib.pyplot as plt
第二步:绘制一个简单的图形
这里需要构建一个x轴坐标的列表,一个y轴左边的列表,两个列表的元素个数要相同,并且都是integer
import matplotlib.pyplot as plt # 导入库
import random # 我这里要用随机数生成两个列表
lst1 = [i for i in range(10)] # x坐标十个
lst2 = [random.uniform(5, 6) for j in range(10)] # y坐标十个
plt.plot(lst1, lst2) # 把图像绘入坐标系
结果如下:

这个图真是太丑了!
- Matplot库内的子库类非常的多, matplotlb.pyplot是绘制图形的命令字库,相当于一个API接口,我们通过pyplot可以简便的调用Matplotlib中所有的可视化类。
- 非可视化类一般用于调整图片细节(如图像边缘宽度等),但是这些一般都用的少。
第三步:Matplotlib常用的图表绘制
- 折线图
- 散点图/气泡图
- 条形图/柱状图
- 饼图
- 直方图
- 箱线图
- 热力图
小结:绘图只是我们的工具,于我而言,更重要的是什么样的数据用什么图去分析才能够有更好的效果,能够帮助我们在工作中更进一步。
折线图绘制:
折线图的作用:能够用于显示随时间或者有序类别的变化趋势。
折线图的代码如下:
流程:1. 准备数据; 2. 画; 3. 线条和标记节点样式安排(这一点可有可无,看个人喜好)
线条和标记节点样式:
线条颜色: color=“g”
线条风格: linestyle="–"
线条粗细:linewidth=5.0
标记风格:marker=“o”
标记颜色:markerfacecolor=“b”
标记尺寸:markersize=2o
透明度:alpha=0.5
如果不设置颜色,系统默认会取一个不同颜色来区分线条;下面做个表格列出来所有的颜色以及标记:
| 颜色 | 说明 | 风格字符 | 说明 | 标记字符1 | 说明 | 标记字符2 | 说明 |
|---|---|---|---|---|---|---|---|
| r | 红色 | - | 实线 | o | 实心圈标记 | 1 | 下花三角标记 |
| g | 绿色 | – | 虚线,破折号 | . | 点标记 | 2 | 上花三角标记 |
| b | 蓝色 | -. | 点划线,虚线 | , | 像素标记,极小的点 | 3 | 左花三角标记 |
| w | 白色 | : | 点虚线, 虚线 | v | 倒三角标记 | 4 | 右花三角标记 |
| " " | 留空或空格,无线条 | ^ | 上三角标记 | 5 | 实心方形标记 | ||
| c | 青色 | > | 右三角标记 | p | 实心五角标记 | ||
| m | 洋红 | ||||||
| y | 黄色 | ||||||
| k | 黑色 |
等等还有几个…
现在我们为刚才的图像增加几个标记:
import matplotlib.pyplot as plt # 导入库
import random # 我这里要用随机数生成两个列表
lst1 = [i for i in range(10)] # x坐标十个
lst2 = [random.uniform(5, 6) for j in range(10)] # y坐标十个
plt.plot(
lst1, lst2,
color="#000000", # 线条颜色
linestyle="--", # 线条样式
linewidth=15, # 线条粗细
#标记样式
marker="*", # 标记样式
markerfacecolor="r" # 标记颜色
markersize=16, # 标记大小
alpha=0.5 # 透明度
) # 把图像绘入坐标系
效果:

案例:前年国际外汇市场美元/人民币汇率走势图
时间 收盘价
2017年7月3日 6.8007
2017年7月4日 6.8007
2017年7月5日 6.8015
2017年7月6日 6.8015
2017年7月7日 6.8060
2017年7月10日 6.8036
2017年7月11日 6.8025
2017年7月12日 6.7877
2017年7月13日 6.7835
2017年7月14日 6.7758
2017年7月17日 6.7700
2017年7月18日 6.7463
2017年7月19日 6.7519
2017年7月20日 6.7595
2017年7月21日 6.7669
2017年7月24日 6.7511
2017年7月25日 6.7511
2017年7月26日 6.7539
2017年7月27日 6.7430
2017年7月28日 6.7374
2017年7月31日 6.7265
代码:
# 汇率
eurcny = [6.8007,6.8007,6.8015,6.8015,6.8060,6.8036,6.8025,6.7877,6.7835,6.7758,6.7700,6.7463,6.7519,6.7595,6.7669,6.7511,6.7511,6.7539,6.7430,6.7374,6.7265]
# 日期
date = [3,4,5,6,7,10,11,12,13,14,17,18,19,20,21,24,25,26,27,28,31]
# 设置图像大小
plt.figure(figsize=(18, 8))
# 折线图
plt.plot(
date,
eurcny,
color='r',
linestyle='--',
linewidth=15,
marker='o',
markersize=30,
markerfacecolor='g',
alpha=0.3,
)
plt.plot(eurcny)
plt.grid(linewidth=0.2, alpha=0.5)

暂时先总结到折线图,后面的图形及可视化后面会继续总结。
数据可视化:绘图库-Matplotlib的更多相关文章
- Python 绘图库Matplotlib入门教程
0 简单介绍 Matplotlib是一个Python语言的2D绘图库,它支持各种平台,并且功能强大,能够轻易绘制出各种专业的图像. 1 安装 pip install matplotlib 2 入门代码 ...
- python 绘图库 Matplotlib
matplotlib官方文档 使用Matplotlib,能够轻易生成各种图像,例如:直方图.波谱图.条形图.散点图等. 入门代码实例 import matplotlib.pyplot as plt i ...
- 【Matplotlib-01】Python 绘图库 Matplotlib 入门教程
环境: Windows10 python3.6.4 numpy1.14.1 matplotlib2.1.2 工具:Cmder 目录: 1.线性图 2.散点图 3.饼状图 4.条形图 5.直方图 例1: ...
- 『科学计算』科学绘图库matplotlib学习之绘制动画
基础 1.matplotlib绘图函数接收两个等长list,第一个作为集合x坐标,第二个作为集合y坐标 2.基本函数: animation.FuncAnimation(fig, update_poin ...
- Ubuntu下安装Python绘图库Matplotlib的方法
在安装好Python的基础上, sudo apt-get install python-numpy sudo apt-get install python-scipy sudo apt-get ins ...
- Python3绘图库Matplotlib(02)
控制颜色 Color Color Name b blue c cyan g green k black m magenta r red w white y yellow plt.plot(x1, y1 ...
- Python3绘图库Matplotlib(01)
1 First plots with Matplotlib 简单的绘图1 简单的绘图2 简单的绘图3 2 网格 = grid 3 设置坐标轴的取值范围 = axis xlim ylim 方法1:整体设 ...
- 『科学计算』科学绘图库matplotlib练习
思想:万物皆对象 作业 第一题: import numpy as np import matplotlib.pyplot as plt x = [1, 2, 3, 1] y = [1, 3, 0, 1 ...
- windows环境下,用python绘图库matplotlib绘图时中文乱码问题
1.下载中文字体(看自己爱好就行)下面这个举例: SimHei - Free Font Downloadwww.fontpalace.co 2.下载之后,打开即可安装,将字体安装进windows系统 ...
随机推荐
- Linux上安装jdk1.8和配置环境变量
前言 Linux 上安装jdk1.8 和配置环境变量,参考相关文档,本人在此总结,操作归纳如下. 第一步:创建jdk安装目录(该/usr/local/src 目录是空的,最好把我们自己下载的放到这,容 ...
- 安装Elasticsearch可视化插件
背景 项目中使用Elasticsearch , 最开始14年使用的时候需要es自己安装插件才能通过web页面查看数据情况,目前新版本的ES安装插件很费劲,通过搜索发现目前谷歌浏览器就有这个插件,这里简 ...
- 一篇干货满满的 NFS 文章
目录 NFS 1. 安装 2. 配置 3. 启动并添加到开机自启 4. NFS 客户端挂载 5 报错与解决办法 6. Win 系统安装 NFS client NFS 1. 安装 yum install ...
- 使用malloc函数或new运算符为链表结点分配内存空间
目录 使用malloc函数或new运算符为链表结点分配内存空间 使用malloc函数或new运算符为链表结点分配内存空间 当我们定义链表结点类型后,如何在每次需要使用新结点时临时分配相应大小的内存空间 ...
- Spring Boot2 系列教程(十三)Spring Boot 中的全局异常处理
在 Spring Boot 项目中 ,异常统一处理,可以使用 Spring 中 @ControllerAdvice 来统一处理,也可以自己来定义异常处理方案.Spring Boot 中,对异常的处理有 ...
- ES三节点重启后报错no known master node
问题 一直在研究ES的监控怎么做,想偷点懒,不去通过API获取然后计算,就想找个现成的插件或者监控软件,只要装个agent就可以,然后就找到了x-pack,插件装好了之后,需要重启ES集群,线上的ES ...
- [牛客网NOIP赛前集训营-提高组(第一场)]C.保护
链接:https://www.nowcoder.com/acm/contest/172/C来源:牛客网 题目描述 C国有n个城市,城市间通过一个树形结构形成一个连通图.城市编号为1到n,其中1号城市为 ...
- GSS3 - Can you answer these queries III
题意翻译 nnn 个数, qqq 次操作 操作0 x y把 AxA_xAx 修改为 yyy 操作1 l r询问区间 [l,r][l, r][l,r] 的最大子段和 感谢 @Edgration 提供的 ...
- 冰释前嫌——转入Android Studio与连接手机无法识别问题
前言:曾有段时间被AS+gradle虽紧密结合却依然搞不定联网依赖的模样弄的头疼,尝试了各种改代理.改配置均无果,于是坚守Eclipse进行开发学习,结果一方面受制于gradle Android项目的 ...
- 这可能就是你苦苦寻找免费、高颜值、功能强大的 Markdown 编辑器(共5款)
本文作者 | HelloGitHub-小猪蹄 Markdown 是一个轻量级的标记语言,语法简单.容易上手,它深受程序员.博客主等人群的钟爱.随着越来越多的博客系统支持 Markdown,它也开始越来 ...