1、Matplotlib库简介
1) 一个python版的matlab绘图接口,以2D为主,支持python、numpy、pandas基本数据结构,运营高效且有较丰富的图表库
2) 在使用之前建议设置一个自己喜欢的样式、或者按照工程及论文要求的图形样式进行绘图参数的设置,关于如何设置,可以查看上一篇博客
2、图表窗口
由于选择使用的是jupyter notebook,这里就存在多种表格窗口的显示
2.1 plt.show()
直接显示图表
这里生成的图表就是我们之前设置好参数后默认出的图表样式
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.plot(np.random.rand(10))
plt.show()
–> 输出的结果为:(这里是随机数生成的图,每次是不一样的)
2.2 %matplotlib inline
嵌入图表
这种方式,可以直接将生成的图表内嵌到notebook
中,也就不需要进行plt.show()
进行显示
%matplotlib inline
x = np.random.randn(1000)
y = np.random.randn(1000)
plt.scatter(x,y)
–> 输出的结果为:(最上面的一行代码输出,代表该图表的类实例对象)
2.3 %matplotlib notebook
可交互的matplotlib窗口
可以弹出交互的matplotlib
窗口,不用plt.show()
,可以对窗口做一定调整
%matplotlib notebook
s = pd.Series(np.random.randn(100))
s.plot(style = 'k--o',figsize=(10,5))
–> 输出的结果为:(左上角的电源开关键就是关闭交互模式;鼠标停放在图线上右下角会有对应的坐标数据的产生,左下侧的一些按钮选项可以对图像进行相应的操作;经常使用的就是微调然后进行图像的保存;最右边的小灰色三角是可以进行拖动的,用来缩放图像;最下面的一行代码和之前的一样,都是代表图表的类实例对象)
2.4 %matplotlib qt5
弹出matplotlib控制台
特别要注意:如果已经设置了显示方式(比如notebook),需要重启然后再运行魔法函数(网页嵌入的交互性窗口和控制台,只能显示一个)
%matplotlib qt5
df = pd.DataFrame(np.random.rand(50,2),columns=['A','B'])
df.hist(figsize=(12,5),color='g',alpha=0.8)
–> 输出的结果为:(主要是左上方的一些按钮的使用,和上一个魔法函数类似,但是这里可以进行更细微的调整)
可以通过左上方的按钮对图像进行微调
3、图表基本元素
3.1 图名、轴标签、图例
plt.title()
设置标题
plt.legend()
设置图例
plt.xlabel()
设置x轴标签
plt.ylabel()
设置y轴标签
plot(figsize=(6,4))
设置画布大小
df = pd.DataFrame(np.random.rand(10,2),columns=['A','B'])
fig = df.plot(figsize=(6,4))
plt.title('Interesting Graph - Check it out') # 图名
plt.xlabel('Plot Number') # x轴标签
plt.ylabel('Important var') # y轴标签
plt.legend(loc = 'upper right')
–> 输出的结果为:(这里可以通过fig这个变量保存创建的该图表对象,后面可以进行操作)
关于图例的参数:loc
表示位置(可以使用loc='best'
,也可以使用loc=0
,两者是等价的)
'best' : 0, (自适应方式)
'upper right' : 1,
'upper left' : 2,
'lower left' : 3,
'lower right' : 4,
'right' : 5,
'center left' : 6,
'center right' : 7,
'lower center' : 8,
'upper center' : 9,
'center' : 10,
3.2 轴边界,轴刻度,轴刻度标签
plt.xlim()
设置x轴边界范围
plt.ylim()
设置y轴边界范围
plt.xticks()
设置x刻度
plt.yticks()
设置y刻度
fig.set_xticklabels()
x轴刻度标签,基于上面设置的x刻度(需要首先创建一个画布实例并赋值给fig)
fig.set_xticklabels()
y轴刻度标签,基于上面设置的y刻度(需要首先创建一个画布实例并赋值给fig)
plt.xlim([0,12])
plt.ylim([0,1.5])
plt.xticks(range(10))
plt.yticks([0,0.2,0.4,0.6,0.8,1.0,1.2])
fig.set_xticklabels("%.1f" %i for i in range(10))
fig.set_yticklabels("%.2f" %i for i in [0,0.2,0.4,0.6,0.8,1.0,1.2])
–> 输出的结果为:(推荐使用的方式还是内嵌的方式,这样生成的图像可以直接查看,只进行略览就可以,要是不满足可以再继续调整。范围只限定图表的长度,刻度则是决定显示的标尺 → 这里x轴范围是0-12,但刻度只是0-9,刻度标签使得其显示1位小数,轴刻度标签则是显示格式化的刻度标签)
3.3 网格、刻度显示、刻度指针朝向和坐标轴
plt.grid()
显示网格
plt.tick_params()
刻度显示
matplotlib.rcParams['xtick.direction']
刻度指针方向
plt.axis('off')
关闭坐标轴
这一部分就是前一个博客中进行个人倾向风格的设定参数
1)网格显示
x = np.linspace(-np.pi,np.pi,256,endpoint = True)
c, s = np.cos(x), np.sin(x)
plt.plot(x, c)
plt.plot(x, s)
plt.grid(True, linestyle = "--",color = "gray", linewidth = "0.5",axis = 'x')
核心的参数介绍如下:
linestyle
:线型
color
:颜色
linewidth
:宽度
axis
:x
,y
,both
,显示x/y/
两者的格网
2) 刻度显示
plt.tick_params(bottom='on',top='off',left='on',right='off')
这部分参数就是对上下左右的轴刻度进行显示的(参数比较简单)
3)刻度指针方向
import matplotlib
matplotlib.rcParams['xtick.direction'] = 'out'
matplotlib.rcParams['ytick.direction'] = 'inout'
设置刻度的方向,in
,out
,inout
这里需要导入matploltib
,而不仅仅导入matplotlib.pyplot
4) 坐标轴显示
这里有两种方式,其中一种就是matlab里面的坐标轴的关闭方式,这里为了输出效果,并没有关闭坐标轴
frame = plt.gca()
#plt.axis('off')
# 关闭坐标轴
#frame.axes.get_xaxis().set_visible(False)
#frame.axes.get_yaxis().set_visible(False)
# x/y 轴不可见
–> 输出的结果为:(如果要设置单侧网格线时候就需要把之前设置网格线的开关给关闭掉,然后再通过axis = 'x'
,或者axis = 'y'
,来控制哪一端的网格线显示)