matplotlib多纵轴_Matplotlib库学习笔记1-Matplotlib库入门

a4a0b1a1dc42fe99853974f8deb338f0.png

Matplotlib:一个Python优秀的数据可视化第三方库,Python 2D-绘图领域使用最广泛的套件。

Gallery - Matplotlib 3.3.0 documentation​matplotlib.org
1796cf6bcd0c642053e6fbbd5bfac34d.png

Matplotlib库的使用

Matplotlib库由各种可视化类构成,内部结构复杂,受Matlab启发
matplotlib.pyplot是绘制各类可视化图形的命令子库,相当于快捷方式
import matplotlib.pyplot as plt(建议使用plt作为别名)

pyplot的plot()函数

plt.plot(x,y,format_string,**kwargs)

  • x:x轴数据,列表或数组,可选(当绘制多条曲线时,各条曲线的x不能省略)
  • y:y轴数据,列表或数组
  • format_string:控制曲线的格式字符串,可选
  • **kwargs:第二组或更多(x,y,format_string)

plt.plot()只有一个输入列表或数组时,参数被当作y轴,x轴以索引自动生成

import 

cce669a23fee6712f5230c3e95ab4536.png

format_string:控制曲线的格式字符串,由颜色字符、风格字符和标记字符组成

01a55990de11bb9f53f851ddf5fede9e.png

如果不指定颜色,系统会自动的选择一条与其他颜色不同的颜色赋给曲线

9815f681ad83f6dbe285d598ab2f7922.png

标记字符:在曲线中的每一个数据点采取什么样的方式标记

cdf9a776c42cda83356fd8d1a2d1e388.png

进行风格自定义后

import 

722427d2ef450971e38e1df039cd2be1.png

其他控制参数命令

  • color:控制颜色,color='green'
  • linestyle:线条风格,linestyle='dashed'
  • marker:标记风格,marker='o'
  • marekerfacecolor:标记颜色,markerfacecolor='blue'
  • markersize:标记尺寸,markersize=20

pyplot的中文显示

  • pyplot并不默认支持中文显示,需要rcParams修改字体实现
import matplotlib.pyplot as plt
import matplotlib

matplotlib.rcParams['font.family']='SimHei'    #'SimHei'是黑体
plt.plot([3,1,4,5,2])
plt.ylabel("纵轴(值)")
plt.savefig('test',dpi=600)
#plt.savefig()将输出图形存储为文件,默认PNG格式,可以通过dpi修改输出质量
#DPI:图像每英寸长度内的像素点数
plt.show()

559391ac6aeb8db36fa77f95a2a48bd8.png

rcParams的属性

658ccc8039b552b2ad84c56cdeeb1821.png
import 

180152c17f049b960c3fd208c8036969.png
  • 在特定需要中文输出的地方,增加一个属性:fontproperties,局部字体作用,推荐使用
import matplotlib.pyplot as plt
import numpy as np

a=np.arange(0.0,5.0,0.1)

plt.xlabel("横轴:时间",fontproperties='SimHei',fontsize=20)
plt.ylabel("纵轴:振幅",fontproperties='SimHei',fontsize=20)
plt.plot(a,np.cos(2*np.pi*a),'g:v')
plt.show()

47f49587eaf777c6d0ba55508237379c.png

pyplot的文本显示方法

  • plt.xlabel() 对x轴增加文本标签
  • plt.ylabel() 对y轴增加文本标签
  • plt.title() 对图形整体增加文本标签
  • plt.text() 在任意位置增加文本
  • plt.annotate() 在图形中增加带箭头的注解
import matplotlib.pyplot as plt
import numpy as np

a=np.arange(0.0,5.0,0.1)
plt.plot(a,np.cos(2*np.pi*a),'g:*')
plt.xlabel("横轴:时间",fontproperties='SimHei',fontsize=20,color='green')
plt.ylabel("纵轴:振幅",fontproperties='SimHei',fontsize=20,color='blue')
plt.title(r'正弦波实例 $y=cos(2pi x)$',fontproperties='SimHei',fontsize=25)
plt.annotate(r'$mu=100$',xy=(2,1),xytext=(3,1.5),arrowprops=(dict(facecolor='black',shrink=0.1,width=2)))     
#文本显示在(2,1)位置上
#LaTeX格式的数学公式排版命令  $ 数学公式 $
#shrink表示从箭头的起始到结束按照0.1的比例,箭头的两侧会缩进

plt.axis([-1,6,-2,2])       #横轴坐标(-1,6)  纵轴坐标(-2,2)
plt.grid(True)              #加入网格曲线
plt.show()

655b0813108aa12a15b8a83e90d98950.png

plt.annotate(s,xy=arrow_crd,xytext=text_crd,arrowprops=dict)

  • s:要注解的字符串
  • xy:箭头所在的位置
  • xytext:文本显示的位置
  • arrowprops:一个字典类型,定义了整个箭头显示的属性

pyplot的子绘图区域

plt.subplot(nrows,ncols,plot_number)

在全局绘图区域中创建一个分区体系,并定位到一个子绘图区域

  • nrows 横轴数量
  • ncols 纵轴数量
  • plot_number 当前绘图区域
import matplotlib.pyplot as plt
import numpy as np

def f(t):
    return np.exp(-t)*np.cos(2*np.pi*t)

a=np.arange(0.5,5.0,0.1)

plt.subplot(3,2,1)
plt.plot(a,f(a))

plt.subplot(3,2,2)
plt.plot(a,np.cos(2*np.pi*a))

plt.subplot(3,2,5)
plt.plot(a,np.exp(a))

plt.subplot(3,2,6)
plt.plot(a,np.log10(a))

plt.show()

d024cabbd024f3b0f6bb1d98aee0ab96.png

plt.subplot2grid(GridSpec,CurSpec,colspan=1,rowspan=1)

设定网格,选中网格,确定选中行列区域数量,编号从0开始

  • GridSpec:一个元组(m,n),将一个区域分割成m行n列的网格形状
  • CurSpec:一个元组(m,n),当前选定的位置为第m行第n列(编号从0开始)
  • colspan:列的延伸,从选定位置在列的方向上延伸n个长度
  • rowspan:行的延伸,从选定位置在行的方向上延伸n个长度

GridSpec类

import matplotlib.gridspec as gridspec

gs=gridspec.GridSpec(3,3)    #3行3列,9块区域

ax1=plt.subplot(gs[0,:])     #横向第0行,纵向全部
ax2=plt.subplot(gs[1,:-1])   #横向第1行,纵向除最后一个取全部
ax3=plt.subplot(gs[1:,-1])   #横向从第1行去到结束,纵向最后一列
ax4=plt.subplot(gs[2,0])     #第2行0列
ax5=plt.subplot(gs[2,1])     #第2行1列
阿迪:Matplotlib库学习笔记2-基础图标函数​zhuanlan.zhihu.com
f1586fdb7496557ae7077cf8d059fe41.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值