Python高级--matplotlib画图

Matplotlib官方文档

一、Matplotlib基础

下面的测试数据下载
Matplotlib中的基本图表包括的元素

1) x轴和y轴  axis
水平和垂直的轴线

2)轴标签 axisLabel
水平和垂直的轴标签

3)x轴和y轴刻度  tick
刻度标示坐标轴的分隔,包括最小刻度和最大刻度

4)x轴和y轴刻度标签  tick label
表示特定坐标轴的值

5)绘图区域(坐标系)  axes
实际绘图的区域

6)画布 figure
呈现所有的坐标系

这里写图片描述

1)只含单一曲线的图

画一条正弦曲线

x = np.arange(-np.pi,np.pi,0.1)  # [start,] stop[, step,] 开始值 结束值 步长值
x
y = np.sin(x)
y
plt.plot(x,y)  # plot(x, y) 最简单的参数形式 传入x和y的值

这里写图片描述

2)只含多个曲线的图

方法一:使用多个plot函数(推荐)

x1 = np.arange(-np.pi,0,0.1)
x2 = np.arange(0,np.pi,0.1)
# 方式一:多次使用 plt.plot绘制多个函数
plt.plot(x1,np.sin(x1))
plt.plot(x2,np.sin(x2))

这里写图片描述

方法二:在一个plot函数中传入多对X,Y值

x1 = np.arange(-np.pi,0,0.1)
x2 = np.arange(0,np.pi,0.1)
#调用一次plt.plot里面传入多个x和y的值 plt.plot(x1,y1,x2,y2,...xn,yn)
plt.plot(x1,np.sin(x1),x2,np.sin(x2))

这里写图片描述

3)子画布

matplotlib中画布分为主画布与子画布,主画布包含子画布

1、设置主画布的大小

plt.figure(figsize=None)

x = np.arange(-np.pi,np.pi,0.1)
plt.figure(figsize=(5,5))  #设置主画布大小  注意设置画布大小必须在图形之前才有效
plt.plot(x,np.tan(x))

这里写图片描述

2、设置子画布的大小

plt.subplot(*args, **kwargs)

'''
# subplot(2, 3, 3) 
创建一个子画布 把原来的大的画布 
上下分成2部分 左右分成3部分 占用哪个部分
'''
(1) : 创建子画布
plt.figure(figsize=(8,8))
axes1 = plt.subplot(4,2,1)  # 根据传入的参数创建子画布 返回坐标系对象这里占纵向的1/4
axes2 = plt.subplot(4,2,4)
axes3 = plt.subplot(2,2,3)  #注意,这里的纵向画布是占总画布的一半
axes4 = plt.subplot(2,2,4)
(2) : 在子画布中绘图

在每一个小的坐标系上绘图 而不是在大的画布上绘图

axes1.plot(x,np.sin(x))
axes2.plot(x,np.cos(x))
axes3.plot(x,np.tan(x))
axes4.plot(x,np.tanh(x))

这里写图片描述

4)网格线

plt.grid(b=None,which=’major’,axis=’both’,**kwargs)

注意:如果画布有子画布的话,plt.grid只会给离他最近的那个子画布绘制网格线
一般给子画布单独绘制网格线

创建一个空的画布

plt.figure(figsize=(8,8))
axes1 = plt.subplot(221)
axes2 = plt.subplot(222)
axes3 = plt.subplot(223)
axes4 = plt.subplot(224)

这里写图片描述

axis显示轴向

'''
axis: 默认为横纵都有   
    axis="x" 在 X 轴上方绘制网格线
    axis="y" 在 Y 轴上方绘制网格线
'''
axes2.grid(axis='x')  # 在轴上方绘制网格线

color(c)代表颜色

alpha表示线的明暗程度

linewidth(lw)代表线的粗细

axes4.grid(color='red',linewidth=2,alpha=0.2)
axes1.grid()  # axis='both' 默认水平竖直方向都有网格线
axes2.grid(axis='x')  # 在轴上方绘制网格线
axes3.grid(axis='y')
axes4.grid(color='red',linewidth=2,alpha=0.2)

这里写图片描述

5)坐标轴的轴线

plt.axis([xmin,xmax,ymin,ymax])

1)设置坐标轴的刻度起止值

(1) plt.axis()设置坐标轴起始值

plt.axis([xmin,xmax,ymin,ymax])

x = np.linspace(-1,1,100)
# x**2+y**2=1
# y**2=1-x**2
# y=(1-x**2)**0.5
y=(1-x**2)**0.5
plt.plot(x,y)
plt.plot(x,-y)
plt.axis([-2,2,-2,2])  # [x轴的起始值,x轴的结束值,y轴的起始值,y轴的结束值]

这里写图片描述

这里写图片描述

(2) xlim方法和ylim方法设置坐标轴起始值

2)设置坐标轴类型

plt.axis(‘xxx’) ‘off’、’equal’……

'''
equal:改变*x*或*y*轴的极限,使其等于*x*的增量
和*y*长度相同;一般用来绘制圆形
off:隐藏坐标轴
'''

这里写图片描述

(2) 绘制圆形

x = np.linspace(-1,1,100)

6)坐标轴的标签

设置坐标轴标签的方向,颜色,旋转角度

plt.xlabel( )方法 和 plt.ylabel( )方法

plt.xlabel(s,color=’orange’,fontsize=20,rotation=20)

'''
s: 标签名称
color:标签颜色
fontsize:标签字体大小
rotation: 标签旋转角度
'''
# 正弦曲线
x = np.arange(-np.pi,np.pi,0.1)
y = np.sin(x)
plt.plot(x,y)
# X  Y 标签的内容
plt.xlabel('x')             
plt.ylabel('f(x)=sin(x)')   
plt.xlabel('x',color='orange',fontsize=20,rotation=20)  #设置X轴标签的内容及样式
plt.ylabel('f(x)=sin(x)',rotation=60 ,fontsize=20)  #设置Y轴标签的内容及样式

这里写图片描述

7)画布的标题

plt.title(s, *args, **kwargs)

'''
color:颜色
fontsize:字体大小
rotation:旋转角度
loc:位置{'center', 'left', 'right'}
    默认在中间
'''
# 正弦曲线
x = np.arange(-np.pi,np.pi,0.1)
x
y = np.sin(x)
plt.plot(x,y)
plt.title('Sin(x)',color='red',fontsize=25,rotation=45,loc='right')  # 默认在中间

这里写图片描述

8)图例

(1)方式一 plt.plot()中传入名字

# 方式一 plt.plot()中传入名字
x = np.linspace(0,10,101)
x
plt.plot(x,x,label='normal')
plt.plot(x,2*x,label='fast')
plt.plot(x,x/2,label='slow')
plt.legend()  #注意,使用label之后需要调用legend()

这里写图片描述

(2)方式二 plt.plot()中传入名字

x = np.linspace(0,10,101)
x
plt.plot(x,x)
plt.plot(x,2*x)
plt.plot(x,x/2)
plt.legend(['normal','fast','slow'])

这里写图片描述

(3) loc参数

功能:设置图例的位置
默认在最优位置

字符串 数值 字符串 数值
best 最优的位置 0 center left 中间靠左 6
upper right 右上角 1 center right 中间靠右 7
upper left 坐上角 2 lower center 中间靠下 8
lower left 左下角 3 upper center 中间靠上 9
lower right 右下角 center 正中间 10
right 中间靠右 5
data = np.random.randint(0,100,size=(10,3))
df = DataFrame(data,columns=list('ABC'))
df
plt.plot(df['A'])
plt.plot(df['B'])
plt.plot(df['C'])
plt.legend(['1','2','3'],loc=9)

这里写图片描述

loc参数还可以是2个元素的列表,表示图例左下角的坐标

  • [0,0] 左下
  • [0,1] 左上
  • [1,0] 右下
  • [1,1] 右上
data = np.random.randint(0,100,size=(10,3))
df = DataFrame(data,columns=list('ABC'))
df
plt.plot(df['A'])
plt.plot(df['B'])
plt.plot(df['C'])
plt.legend(['1','2','3'],loc=[1,0.5])

这里写图片描述

(4) ncol参数

功能:设置图例有几列

data = np.random.randint(0,100,size=(10,3))
df = DataFrame(data,columns=list('ABC'))
df
plt.plot(df['A'])
plt.plot(df['B'])
plt.plot(df['C'])
plt.legend(ncol=3)

这里写图片描述

二、设置plot的风格和样式

1、点和线的样式

(1)颜色

参数colo=”red”或c=”red”
颜色值的方式
1.合法的HTML颜色名
2.别名
3.HTML十六进制字符串
4.归一化到[0, 1]的RGB元组
x = np.linspace(-np.pi,np.pi,100)
x
plt.plot(x,np.sin(x),color='red')  #常规设置颜色
plt.plot(x,np.sin(x),c='red')  #简写设置颜色
plt.plot(x,np.sin(x),c='#aabbcc')  
  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值