赞
踩
二、常用基本函数:plt.xticks,plt.yticks,ply.xlim,plt.ylim,plt.xlabel,plt.ylabel,plt.title,plt.legend等
八、归纳练习
九、面对对象画图
1、调用包:
- import numpy as np
- import matplotlib.pyplot as plt
2、正常显示中文及负号:(经常用到,否则无法显示中文及负号,经常用到,建议记住代码)
- plt.rcParams['font.family'] = 'SimHei' # 正常显示中文
- plt.rcParams['axes.unicode_minus'] = False # 正常显示负号
3、简单折线图:以横轴坐标值为x,纵轴坐标值为sin(x),颜色为红色画线
- x = np.linspace(0, 10, 30) # x轴坐标值
- plt.plot(x, np.sin(x),c = 'r') # 参数c为color简写,表示颜色,r为red即红色
- plt.show() # 显示图像
4、常用颜色简写为:
高级配色参考网站:https://xkcd.com/color/rgb/
网站界面如下:
把#开头的复制到参数c中即可,如下:
二、常用基本函数:plt.xticks,plt.yticks,plt.xlim,plt.ylim,plt.xlabel,plt.ylabel,plt.title,plt.legend等
1、plt.xticks()、plt.yticks()分别表示横纵轴的刻度:
labels参数调整刻度为自己想要的字符或文字:
2、plt.xlim(),plt.ylim()分别表示横纵轴的刻度范围:
3、给图设置标题:plt.title(),plt.xlabel(),plt.ylabel()
4,显示图例:plt.legend()
首先要在折线图上注明label参数:
plt.legend()中loc参数可选值如下(默认为best):
- best
- upper right
- upper left
- lower left
- lower right
- right
- center left
- center right
- lower center
- upper center
- center
5、网格线:plt.grid()
6、保存图片:plt.savefig(fname)
调用方法:plt.plot(x, y, linestyle, linewidth,color,marker, markersize, markeredgecolor, markerfactcolor, label, alpha)
用法:
- plt.plot(x,
- np.sin(x),
- color = 'b', # 线条颜色 blue
- linewidth = 1, # 线条宽度
- linestyle='-', # 线的类型:虚线:'--',点线:'-.',短虚线':',实线:'-'
- marker='o', # 线上点的形状
- markersize = 10, # 点的大小
- markeredgecolor = 'r', # 点的边框颜色
- markerfacecolor ='y', # 点的背景颜色
- label = 'sin', # 图例
- alpha = 1 ) # 透明度:0-1之间 ,默认1
-
- plt.legend(fontsize = 15) # 显示图例
- plt.show()
其中参数color可简写成c,linewidth可简写为lw,linestyle可简写为ls
1、去除上轴线及右边轴线:
- x = np.linspace(0, 10, 30)
- plt.plot(x, np.sin(x),c = '#0ffef9',label = 'sin(x)')
-
- ax = plt.gca() # 获取当前子图 get current axes
- ax.spines['right'].set_color('none') # spines中文脊柱的意思,表示图边框四条脊柱线:top,bottom,left,right
- ax.spines['top'].set_color('none') # 使上轴线及右轴线颜色设置为none或‘white’
-
- plt.show()
2、调整坐标轴为x,y直角坐标轴
- x = np.linspace(0, 10, 30)
- plt.plot(x, np.sin(x),c = '#0ffef9',label = 'sin(x)')
-
- ax = plt.gca() # 获取当前子图 get current axes
- ax.spines['right'].set_color('none') # spines中文脊柱的意思,表示图边框四条脊柱线:top,bottom,left,right
- ax.spines['top'].set_color('none') # 使上轴线及右轴线颜色设置为none或‘white’
- ax.spines['left'].set_position(('data',0)) # 调整左轴线位置到横坐标0的位置
- ax.spines['bottom'].set_position(('data',0)) # 调整下轴线位置到纵坐标0的位置
-
- plt.show()
plt.text(x,y,s)
x表示x轴坐标值,y表示y轴坐标值 通过x,y来控制标注的位置
- x = np.linspace(0, 10, 30)
-
- plt.plot(x, np.sin(x),c = '#0ffef9',label = 'sin(x)')
- # plt.text(x,y,s) x表示x轴坐标值,y表示y轴坐标值 通过x,y来控制标注的位置
- plt.text(x = 1,y = 0.5,s = '这是标注',fontsize = 15,c = 'b',rotation = 20) # rotation控制文本字体角度
- plt.show()
plt.annotate(text,xy,xytext,arrowprops)
text表示注释文本,xy表示箭头端点位置,xytext表示文本注释的位置,arrowprops控制箭头,形式为字典
- x = np.linspace(0, 10, 30)
-
- plt.plot(x, np.sin(x),c = '#0ffef9',label = 'sin(x)')
- plt.annotate(text = '底点',xy = (4.65,-1),xytext = (4.2,0),
- arrowprops = {'headwidth':10,'facecolor':'r'},fontsize = 15)
- plt.show()
注:若未设置arrowprops参数则没有箭头显示,只有文本注释
- x = np.linspace(0, 10, 30)
- y1 = x*2
- y2 = x**2+5
-
- plt.figure(figsize = (8,5))
- plt.plot(x,y1,'r',x,y2,'g') #注:可以在一个plot函数内画出多条线
-
- plt.fill_between(x,y1,y2,facecolor = 'k',alpha = 0.2)
-
- plt.show()
# 第一个参数表示要覆盖的左右范围,第二个参数表示覆盖的下限,第三个参数表示覆盖的上限,在这里则表示填充y1曲线和y2曲线中间的区域
八、归纳练习
- import matplotlib.pyplot as plt
- import numpy as np
-
- plt.rcParams['font.family'] = 'SimHei' # 正常显示中文
- plt.rcParams['axes.unicode_minus'] = False # 正常显示负号
-
- x = np.linspace(-3, 3, 50)
- y1 = 2*x + 1
- y2 = x**2
-
- # 创建画布并设置大小
- plt.figure( figsize=(8, 5))
-
- plt.plot(x, y1, label='linear line',marker = '+')
- # zorder控制绘图顺序,值越大画的越慢,防止先画从而被后画的图挡住,如下图防止红线被图例挡住从而不清晰
- plt.plot(x, y2, color='red', lw=2.0, ls='--', label='square line',zorder = 10)
-
- plt.xlim(-4,5)
- plt.ylim(-5,10)
- plt.xticks(rotation = 30,fontsize = 12,c = 'k') # rotation:旋转角度
- plt.yticks(rotation = 30,fontsize = 12,c = 'k')
- plt.grid(True)
- plt.legend(loc='upper right',edgecolor = 'none',facecolor = 'g',fontsize =13)
-
- # 注释
- plt.text(-2,-4,'这是直线',fontsize = 15,c = 'b')
- plt.annotate('这是曲线',xy = (2,2),xytext = (3,-1),
- arrowprops ={'headwidth':10,'facecolor':'g'},fontsize = 15,c = 'r')
- # 填充
- plt.fill_between(x,y1,y2,facecolor = 'g',alpha = 0.2)
-
- plt.show()
九、面对对象画图:
在面对对象画图前,让我们来看看图像的组成:
Figure:画布,顶层级,用来容纳所有绘图元素
Axes:可以认为是figure这张画图上的子图,因为子图上一般都是坐标图,也可以愿意理解为轴域或者坐标系。
Axis:axes的下属层级,用于处理所有和坐标轴有关的元素
Tick:axis的下属层级,用来处理所有和刻度有关的元素
综上可知,画出的图像是在画布figure上显示的,axes可理解成figure上的一个子图,axis可理解成子图axes的坐标轴,tick是坐标轴axis上的刻度
我们来看看面对对象是如何画图的,其实很简单,只需要把plt改为面对自己创建的axes即可
如下:
- import matplotlib.pyplot as plt
- import numpy as np
-
- plt.rcParams['font.family'] = 'SimHei' # 正常显示中文
- plt.rcParams['axes.unicode_minus'] = False # 正常显示负号
-
- x = np.linspace(-3, 3, 50)
- y1 = 2*x + 1
- y2 = x**2
-
-
- # 方法一
- fig = plt.figure( figsize=(8, 5)) # 创建画布并设置大小
- ax = fig.add_subplot(111) # 111,表示在画布中创建一行,一列,编号为一的子图,即创建一个子图的意思
- # 方法二
- # fig,ax = plt.subplots(figsize =(8,5))
-
-
- ax.plot(x, y1, label='linear line',marker = '+')
- ax.plot(x, y2, color='red', lw=2.0, ls='--', label='square line',zorder = 10)
-
- ax.set_xlim(-4,5)
- ax.set_ylim(-5,10)
- plt.xticks(rotation = 30,fontsize = 12,c = 'k') # rotation:旋转角度
- plt.yticks(rotation = 30,fontsize = 12,c = 'k')
- ax.grid(True)
- ax.legend(loc='upper right',edgecolor = 'none',facecolor = 'g',fontsize =13)
-
- # 注释
- ax.text(-2,-4,'这是直线',fontsize = 15,c = 'b')
- ax.annotate('这是曲线',xy = (2,2),xytext = (3,-1),
- arrowprops ={'headwidth':10,'facecolor':'g'},fontsize = 15,c = 'r')
- # 填充
- ax.fill_between(x,y1,y2,facecolor = 'g',alpha = 0.2)
-
- plt.show()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。