用matplotlib画线

1:matplotlib基础

Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形[1] 。

通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。

Matplotlib基础知识

1.Matplotlib中的基本图表包括的元素

x轴和y轴

水平和垂直的轴线

x轴和y轴刻度

刻度标示坐标轴的分隔,包括最小刻度和最大刻度

x轴和y轴刻度标签

表示特定坐标轴的值

绘图区域

实际绘图的区域

2.hold属性

hold属性默认为True,允许在一幅图中绘制多个曲线;将hold属性修改为False,每一个plot都会覆盖前面的plot。

但是目前不推荐去动hold这个属性,这种做法(会有警告)。因此使用默认设置即可。

3.网格线

grid方法

使用grid方法为图添加网格线

设置grid参数(参数与plot函数相同)

.lw代表linewidth,线的粗细

.alpha表示线的明暗程度

4.axis方法

如果axis方法没有任何参数,则返回当前坐标轴的上下限

5.xlim方法和ylim方法

除了plt.axis方法,还可以通过xlim,ylim方法设置坐标轴范围

6.legend方法

两种传参方法:

2:代码演示

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> import pandas as pd

>>> nd= np.linspace (0,10,10)
>>> plt.plot(nd)
[<matplotlib.lines.Line2D object at 0x000000001331BDD8>]
>>> plt.show()

>>> nd1= np.linspace (0,100,50)
>>> plt.plot(nd1)
[<matplotlib.lines.Line2D object at 0x0000000013449C88>]
>>> plt.show()
>>> nd1= np.linspace (0,100,50)#从0开始Y为100x为50

>>> #下面是一种在一个图里面绘制多个线的方法
>>> x=np.arange (0,10,1)
>>> plt.plot(x,x*2)
[<matplotlib.lines.Line2D object at 0x00000000140F0DA0>]
>>> plt.plot(x,x/2)
[<matplotlib.lines.Line2D object at 0x00000000140F0E48>]
>>> plt.plot(x,x**2)
[<matplotlib.lines.Line2D object at 0x00000000140FC668>]
>>> plt.show()

>>> #另一种方法
>>> x=np.arange(0,10,1)
>>> plt.plot(x,x**2,x,5*x,x,x/3)
[<matplotlib.lines.Line2D object at 0x0000000013E246D8>, <matplotlib.lines.Line2D object at 0x0000000013E24CF8>, <matplotlib.lines.Line2D object at 0x0000000013E24DA0>]
>>> plt.show()
>>> #下面绘制网格线
>>> x=np.arange(-np.pi,np.pi,0.01)#把-3.14和3.14按0.01分成份
>>> plt.plot(x,np.sin(x))#正弦函数
[<matplotlib.lines.Line2D object at 0x0000000013733898>]
>>> plt.show()
>>> plt.plot(x,np.sin(x),x,np.cos(x))
[<matplotlib.lines.Line2D object at 0x0000000013423C50>, <matplotlib.lines.Line2D object at 0x0000000013423CF8>]

>>> plt.grid(True)#网格展示
>>> plt.show()

>>> #plt面向对象
>>> #创建对象
>>> #图形就是所谓的对象

>>> a=plt.subplot(1,3,1)#sub = 子,一行三列第一视图
>>> x=np.arange (-20,20,0.1)
>>> a.plot (x,np.sin(x))
[<matplotlib.lines.Line2D object at 0x000000001CA2CB00>]
>>> x2=np.arange (-20,20,1)
>>> a=plt.subplot(1,3,2)#sub = 子,一行三列第二视图

>>> a.plot (x2,np.sin(x2))
[<matplotlib.lines.Line2D object at 0x000000001CC88940>]
>>> x3=np.arange (-20,20,0.2)
>>> a=plt.subplot(1,3,3)#sub = 子,一行三列第三视图
>>> a.plot (x3,np.sin(x3))
[<matplotlib.lines.Line2D object at 0x000000001CD6D390>]

>>> plt.show()
>>> a.grid(color='g',linestyle='--',linewidth=2)
>>> plt.show()
>>> plt.show()


>>> a.plot (x3,np.sin(x3))
[<matplotlib.lines.Line2D object at 0x000000001CA2C978>]
>>> a.grid(color='g',linestyle='--',linewidth=2)#设置网格类型,颜色及线宽
>>> plt.show()
>>> #坐标轴界限
>>> #axis方法
>>> #如果axis方法没有任何参数,则返回当前坐标轴IDE上下限
>>> x=np.random.randn(10)
>>> plt.plot(x)
[<matplotlib.lines.Line2D object at 0x000000001C9CBE48>]

>>> plt.show()
>>> x=np.random.randn(20)

>>> plt.axis([-5,15,-5,10])
[-5, 15, -5, 10]#x的范围是-5到15而y的范围是-5到10
>>> plt.plot(x)
[<matplotlib.lines.Line2D object at 0x000000001D324E80>]
>>> plt.show()

>>> x=np.linspace(-5,5,100)
>>> plt.plot(x,np.tan(x))
[<matplotlib.lines.Line2D object at 0x000000001D5E85F8>]
>>> plt.axis('off')
(-5.5, 5.5, -214.01584316694965, 214.01584316694965)
>>> #off表示把坐标轴隐藏
>>> plt.show()

>>> #画圆
>>> plt.plot(np.sin(x),np.cos(x))
[<matplotlib.lines.Line2D object at 0x000000001D80EC88>]
>>> plt.show()
>>> plt.axis('equal')#使x轴和y轴的大小相等
(-0.05500000000000001, 0.05500000000000001, -0.05500000000000001, 0.05500000000000001)
>>> plt.plot(np.sin(x),np.cos(x))
[<matplotlib.lines.Line2D object at 0x000000001D5E8A90>]
>>> plt.show()

>>> #当然也可以设置figuresize设置标准圆
>>> #除了plt.axis方法,还可以通过xlim,ylim方法设置坐标轴范围
>>> y=np.arange(0,10,1)
>>> y
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> plt.plot(y)
[<matplotlib.lines.Line2D object at 0x000000001DC55A20>]
>>> plt.xlim(-2,12)
(-2, 12)
>>> plt.ylim(2,22)
(2, 22)
>>> plt.show()

>>> #坐标轴标签
>>> y=np.arange(0,10,2)
>>> x=y**2+5
>>> plt.xlabel('f(x)')
Text(0.5,0,'f(x)')
>>> plt.ylabel('x')
Text(0,0.5,'x')
>>> plt.ylabel('x',size=20)#设置字体大小
Text(0,0.5,'x')
>>> plt.plot(x,y)
[<matplotlib.lines.Line2D object at 0x000000001DAF54E0>]
>>> plt.show()
>>> #设置标题‘
>>> x = np.linspace(-np.pi,np.pi,100)
>>> plt.plot(x,np.sin(x))
[<matplotlib.lines.Line2D object at 0x000000001D5E8860>]
>>> plt.title('f(x)=sin(x)',fontsize=20)
Text(0.5,1,'f(x)=sin(x)')
>>> plt.show()

#下面是设置图标的两种方法

>>> y=np.arange(0,10,1)
>>> x=np.arange(0,10,1)
>>> plt.plot(x,x*1.5,x,x*2,x,x/2)
[<matplotlib.lines.Line2D object at 0x0000000013DEFAC8>, <matplotlib.lines.Line2D object at 0x0000000013DEFBA8>, <matplotlib.lines.Line2D object at 0x0000000013E21668>]
>>> plt.legend(['normal','fast','slow'])#为对应的线设置图标
<matplotlib.legend.Legend object at 0x0000000013E219E8>
>>> plt.show()
>>> #参数传递需要中括号
>>> plt.plot(x,x,label='normal')
[<matplotlib.lines.Line2D object at 0x00000000141994E0>]
>>> plt.plot(x,x**2,label='fast')
[<matplotlib.lines.Line2D object at 0x00000000141999B0>]
>>> plt.plot(x,x/2,label='slow')
[<matplotlib.lines.Line2D object at 0x0000000014199128>]
>>> plt.legend ()
<matplotlib.legend.Legend object at 0x0000000014175AC8>
>>> plt.show()

>>> plt.plot(x,x**2,label='_fast')#加上_使标签不显示
[<matplotlib.lines.Line2D object at 0x00000000138CFA58>]
>>> plt.show()
>>> plt.legend(['normal','fast','slow'],loc='upper_right')#loc设置图例的位置 ,可以设置的参数为   right   center left   upper right   lower right   best   center   lower left   center right  upper left    upper center  lower center

<matplotlib.legend.Legend object at 0x000000001C9BDFD0>
>>> plt.show()
>>>

原文地址:https://www.cnblogs.com/henuliulei/p/9386795.html