行使matplotlib举行数据可视化
痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.3)- FlexSPI NOR连接方式大全(RT1010)
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
要领,给对应图表加上了标题。
Magisk了解以及简单的模块制作