0
点赞
收藏
分享

微信扫一扫

【python数据分析(21)】Matplotlib库绘制图形(图表窗口、图例、标题、轴相关参数、网格、刻度等设置)


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()

–> 输出的结果为:(这里是随机数生成的图,每次是不一样的)

【python数据分析(21)】Matplotlib库绘制图形(图表窗口、图例、标题、轴相关参数、网格、刻度等设置)_python

2.2 ​​%matplotlib inline​​嵌入图表

这种方式,可以直接将生成的图表内嵌到​​notebook​​​中,也就不需要进行​​plt.show()​​进行显示

%matplotlib inline  
x = np.random.randn(1000)
y = np.random.randn(1000)
plt.scatter(x,y)

–> 输出的结果为:(最上面的一行代码输出,代表该图表的类实例对象)

【python数据分析(21)】Matplotlib库绘制图形(图表窗口、图例、标题、轴相关参数、网格、刻度等设置)_matlab_02

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))

–> 输出的结果为:(左上角的电源开关键就是关闭交互模式;鼠标停放在图线上右下角会有对应的坐标数据的产生,左下侧的一些按钮选项可以对图像进行相应的操作;经常使用的就是微调然后进行图像的保存;最右边的小灰色三角是可以进行拖动的,用来缩放图像;最下面的一行代码和之前的一样,都是代表图表的类实例对象)

【python数据分析(21)】Matplotlib库绘制图形(图表窗口、图例、标题、轴相关参数、网格、刻度等设置)_数据分析_03

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)

–> 输出的结果为:(主要是左上方的一些按钮的使用,和上一个魔法函数类似,但是这里可以进行更细微的调整)

【python数据分析(21)】Matplotlib库绘制图形(图表窗口、图例、标题、轴相关参数、网格、刻度等设置)_数据可视化_04


可以通过左上方的按钮对图像进行微调

【python数据分析(21)】Matplotlib库绘制图形(图表窗口、图例、标题、轴相关参数、网格、刻度等设置)_matlab_05

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这个变量保存创建的该图表对象,后面可以进行操作)

【python数据分析(21)】Matplotlib库绘制图形(图表窗口、图例、标题、轴相关参数、网格、刻度等设置)_数据分析_06


关于图例的参数:​​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位小数,轴刻度标签则是显示格式化的刻度标签)

【python数据分析(21)】Matplotlib库绘制图形(图表窗口、图例、标题、轴相关参数、网格、刻度等设置)_数据可视化_07

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'​​,来控制哪一端的网格线显示)

【python数据分析(21)】Matplotlib库绘制图形(图表窗口、图例、标题、轴相关参数、网格、刻度等设置)_javascript_08


举报

相关推荐

python中使用Turtle库绘制图形

0 条评论