利用matplotlib进行数据可视化
matplotlib是python中的一个画图库,继承了matlib(从名字上也看得出来)的优点和语法,所以对于熟悉matlib的用户来说是十分友好的。
pylab和pyplot
关于pylab和pyplot,人们做过不少的讨论。这两个模块有哪些不同呢?pylab模块跟matplotlib一起安装,而pyplot则是matplotlib的内部模块。两者的导入方法有所不同,可选择其中一种进行导入。
from pylab import *
#或
import matplotlib.pyplot as plt
import numpy as np
pylab在同一命名空间整合了pyplot和Numpy的功能,因此无需再单独导入Numpy。更进一步来说,导入pylab后,pyplot和Numpy的函数就可以直接调用,而不用再指定其所属模块(命名空间),从而使得matplotlib开发环境更像是Matlab。
plot(x,y)
array([1,2,3,4])
#而不用指定模块名称
plt.plot()
np.array([1,2,3,4])
大多情况下,我们更乐意使用pyplot模块。
线状图
这里我使用jupyter来进行演示
ipython qtconsole --matplotlib inline
用matplotlib生成这个图表很简单,一行代码就能搞定
plt.plot([1,2,3,4])
plt.show()
如图所示,生成了一个Line2D对象。该对象为一条直线,它表示图表中各数据点的线性延伸趋势。我们可以看出,列表中的数据直接被作为y轴的值展示了出来,x周是从0开始的,所以我们要看一个数据的折线图,只用输入一个list即可。
但我们可以看出这个图可能还很简陋,比如有如下几个问题:
- y轴显示为啥是0.5为步长间隔,我想以1为步长间隔
- 我想控制x轴展示的值,而不是从0开始
- 图太小了,能否控制大小
- x轴和y轴字太小了,能否控制大小
- 给x轴和y轴命个名吧
- 没有网格看不清
- 没有图例
- 给线状图标上点
- 我想保存图片到本地
- 怎么画子图呢
接下来我们就一个一个解决。
1.设置x轴和y轴步长间隔
控制x轴,y轴显示的值,有两个参数
xticks(ticks, [labels], **kwargs)
yticks(ticks, [labels], **kwargs)
- ticks:控制显示的位置,也就是显示那几个值,这几个值必须在y值数据的范围内,这里也就是[1,4]这个范围。
- [labels]:控制显示在对应位置的值,可以是数也可以是字符。
y = [1,2,3,4]
step = 1
plt.yticks([i for i in y if i%step == 0])
plt.plot(y)
2.x轴展示的值
这里展示了坐标轴显示字符的情况。
注意第五行,我改成了[1,2,3,3.5,4],所以显示出来就多了个3.5。
y = [1,2,3,4]
scale_ls = range(4)
index_ls = ["富强","民主","文明","和谐"]
plt.xticks(scale_ls,index_ls)
plt.yticks([1,2,3,3.5,4])
plt.plot(y)
3.控制图表大小
控制图表的大小要用到的几个方法
- rcParams:这个参数是用来设置一些配置参数的,比如这里我就用到了大小和dpi
- figure.figsize:控制大小,参数为一个二元组(x,y),即长、宽
- figure.dpi:控制dpi
plt.rcParams['figure.figsize'] = (10,5)
plt.rcParams['figure.dpi'] = 200
y = [1,2,3,4]
scale_ls = range(4)
index_ls = ["富强","民主","文明","和谐"]
plt.xticks(scale_ls,index_ls)
plt.yticks([1,2,3,3.5,4])
plt.plot(y)
这里可以看出更大更清晰了
4.调节x轴和y轴字体大小
这里控制字体大小用到的也是xticks
和yticks
,只不过使用到了fontsize
参数。
plt.rcParams['figure.figsize'] = (10,5)
plt.rcParams['figure.dpi'] = 200
y = [1,2,3,4]
scale_ls = range(4)
index_ls = ["富强","民主","文明","和谐"]
plt.xticks(scale_ls,index_ls,fontsize=20)
plt.yticks([1,2,3,3.5,4],fontsize=20)
plt.plot(y)
5.给x轴和y轴加上名字
使用
- xlabel(str,fontsize=int )
- ylabel(str,fontsize=int )
plt.rcParams['figure.figsize'] = (10,5)
plt.rcParams['figure.dpi'] = 200
y = [1,2,3,4]
scale_ls = range(4)
index_ls = ["富强","民主","文明","和谐"]
plt.xticks(scale_ls,index_ls,fontsize=20)
plt.yticks([1,2,3,3.5,4],fontsize=20)
plt.xlabel("核心价值观", fontsize=20)
plt.ylabel("顺序", fontsize=20)
plt.plot(y)
6.加上网格
- plt.grid(True),加上横纵两种网格。
- plt.grid(True,axis="x"),加上x轴网格。
plt.rcParams['figure.figsize'] = (10,5)
plt.rcParams['figure.dpi'] = 200
y = [1,2,3,4]
scale_ls = range(4)
index_ls = ["富强","民主","文明","和谐"]
plt.xticks(scale_ls,index_ls,fontsize=20)
plt.yticks([1,2,3,3.5,4],fontsize=20)
plt.xlabel("核心价值观", fontsize=20)
plt.ylabel("顺序", fontsize=20)
plt.grid(True,axis="both")
plt.plot(y)
7.加上图例
使用legend
方法,里面有这么几个参数
- handles:代表使用的是那几个曲线的对象
- labels:代表对应的图例文字
- loc:放置的位置
- prop:额外参数,例如size,控制图例大小
t = np.arange(0, 2.5, 0.01)
y1 = map(math.sin, math.pi*t)
y2 = map(math.cos, math.pi*t)
l1, = plt.plot(list(y1))
l2, = plt.plot(list(y2))
plt.legend(handles = [l1, l2], labels = ['Sin', 'Cos'], loc = 'best', prop={'size': 20})
8.给线状图标点
只用在plot
加入参数marker
即可
t = np.arange(0, 2.5, 0.1)
y1 = map(math.sin, math.pi*t)
y2 = map(math.cos, math.pi*t)
l1, = plt.plot(list(y1), marker = "o")
l2, = plt.plot(list(y2), marker = "*")
plt.legend(handles = [l1, l2], labels = ['Sin', 'Cos'], loc = 'best', prop={'size': 20})
9.保存图片到本地
只用在最后使用savefig
方法
plt.savefig('test.png',dpi=400)
10.画子图
这里使用到了subplot
方法
他有三个参数,分别为
- 几行
- 几列
- 第几个
举个栗子
subplot(2,2,1)
2行2列(即子图排列为田字格形状)第一个subplot(2,1,2)
2行1列(即子图排列为纵向两个图形状)第二个
t = np.arange(0, 2.5, 0.1)
y1 = map(math.sin, math.pi*t)
y2 = map(math.cos, math.pi*t)
plt.subplot(2, 1, 1)
plt.title("Sin", fontsize=20)
l1, = plt.plot(list(y1), marker = "o")
plt.subplot(2, 1, 2)
plt.title("Cos", fontsize=20)
l2, = plt.plot(list(y2), marker = "*")
这里我还使用到了title
方法,给对应图表加上了标题。
利用matplotlib进行数据可视化的更多相关文章
- 基于matplotlib的数据可视化 - 笔记
1 基本绘图 在plot()函数中只有x,y两个量时. import numpy as np import matplotlib.pyplot as plt # 生成曲线上各个点的x,y坐标,然后用一 ...
- matplotlib实现数据可视化
一篇matplotlib库的学习博文.matplotlib对于数据可视化非常重要,它完全封装了MatLab的所有API,在python的环境下和Python的语法一起使用更是相得益彰. 一.库的安装和 ...
- 【Matplotlib】数据可视化实例分析
数据可视化实例分析 作者:白宁超 2017年7月19日09:09:07 摘要:数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息.但是,这并不就意味着数据可视化就一定因为要实现其功能用途而令 ...
- 使用 jupyter-notebook + python + matplotlib 进行数据可视化
上次用 python 脚本中定期查询数据库,监视订单变化,将时间与处理完成订单的数量进行输入写入日志,虽然省掉了人为定时查看数据库并记录的操作,但是数据不进行分析只是数据,要让数据活起来! 为了方便看 ...
- 如何最简便的利用Python实现数据可视化?当然离不开matplotlib!
01|Figure和Subplot: matplotlib的图像全部在figure对象里面,就像是一片画布.figsize是figure的一个设置大小的属性.一个figure里面可以有无数个subpl ...
- 『Matplotlib』数据可视化专项
一.相关知识 官网介绍 matplotlib API 相关博客 matplotlib绘图基础 漂亮插图demo 使用seaborn绘制漂亮的热度图 fig, ax = plt.subplots(2,2 ...
- 基于matplotlib的数据可视化 - 等高线 contour 与 contourf
contour 与contourf 是绘制等高线的利器. contour - 绘制等高线 contourf - 填充等高线 两个的返回值值是一样的(return values are the sam ...
- 利用pyecharts将数据可视化
可视化展示在数据分析领域中是一个至关重要的点,好的可视化展示对我们的结果分析有更好的支持作用. 一.问题 在数据分析的时代里面我们需要将数据的可视化展现出来,更加方便用户的观察.如下图 有些时候我们需 ...
- 用matplotlib对数据可视化
下图是要用到的数据集,反映了从1984到2016年的失业率的变化 1.导入可视化模块import matlibplot.pyplot as plt, 函数plt.plot(x, y)确定折线图的点,x ...
随机推荐
- TPO6-1Powering the Industrial Revolution
The source had long been known but not exploited. Early in the eighteenth century, a pump had come i ...
- python中的变量引用小结
python的变量都可以看成是内存中某个对象的引用.(变量指向该内存地址存储的值) 1.python中的可更改对象和不可更改对象 python中的对象可以分为可更改(mutable)对象与不可更改(i ...
- 基础篇十:模块介绍(--with-help_random_index_module)
配置语法: 下面开始配置: cd /etc/nginx/conf.d/default.conf
- 4)模板输出方法和 fetch总结
(1)fetch函数虽然在我们定义的controller中使用,但是它并不属于Controller.php文件,它属于View.php文件,因为我们的每一个控制器继承了Controller.php文件 ...
- 27)PHP,视图
其实,视图就是一堆select形成的一个表格,但是这个表格也是存在一个数据库里面的,但是,他不会和一般的表格似得在数据库中显示,就好像虚拟存储器的那种感觉一样. 比如 必看我的一下句子 create ...
- day34-进程
#进程是程序的运行,程序不运行不产生进程. #1.进程的并行与并发: # 并行:是指两者同时执行,比如赛跑,两人都在不停的往前跑.(资源够用,比如三个线程,四核的cpu) # 并发:是指资源有限的情况 ...
- elasticsearch ik中文分词器的使用详解
(基于es5.4)先喵几眼github,按照步骤安装好分词器 link:https://github.com/medcl/elasticsearch-analysis-ik 复习一下常用的操作 .查看 ...
- EmguCV常用函数总结
Emgucv常用函数总结: 读取图片 Mat SCr = new Mat(Form1.Path, Emgu.CV.CvEnum.LoadImageType.AnyColor); //根据路径创建指定的 ...
- Python迭代器和关键字 global ,nonlocal
1.关键字 global : 可以修改全局变量 可以在局部作用域声明一个全局变量,剪切 : 此时局部作用域没有该变量,全局作用域中有 name = 1 def func(): global name ...
- FPGA 浮点定点数的处理
大纲: 1浮点数的格式指定 2浮点数的运算(加法) 3浮点数加减法器的实现(难于乘除法器的实现) 1. 在FPGA的设计中,浮点数的概念不同于C语言中的定义,这里的浮点数指的是小数点位置会发生变化的 ...