Matplotlib绘图添加标题,图例,网格,参考线,注释文本,数学表达式,标签,修改刻度
Matplotlib绘图添加标题,图例,网格,参考线,注释文本,数学表达式,标签,修改刻度
matplotlib绘制直方图,饼图,散点图,气泡图,箱型图,雷达图 http:// t.csdn.cn/ZeXim
matplotlib的参数配置: http:// t.csdn.cn/TiI79
一.设置x轴和y轴的标签
xlabel(xlabel,fontdict=None,labelpad=None)
ylabel(ylabel,fontdict=None,labelpad=None)
-
xlabel/ylabel: 表示x轴(y轴)的标签文本。
-
fontdict:表示控制标签文本样式的字典。
-
labelpad:表示标签与坐标轴边框(包括刻度和刻度标签)的距离。
示例代码:
# 标签
import numpy as np
import matplotlib.pyplot as plt
# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
x=np.linspace(-np.pi,np.pi,256,endpoint=True)
y1,y2=np.sin(x),np.cos(x)
plt.plot(x,y1,x,y2)
# 设置标签
plt.xlabel("this is x 轴",size=20)
plt.ylabel("this is y 轴",size=20)
plt.show()
二.设置刻度范围
使用xlim,ylim函数来设置x轴和y轴的范围
xlim(left=None,right=None,emit=True,auto=False,xmin=None,xmax=None)
ylim(left=None,right=None,emit=True,auto=False,ymin=None,ymax=None)
- 使用xmin(ymin)和xmax(ymax)来设置
# 标签
import numpy as np
import matplotlib.pyplot as plt
# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
x=np.linspace(-np.pi,np.pi,256,endpoint=True)
y1,y2=np.sin(x),np.cos(x)
plt.plot(x,y1,x,y2)
# 设置标签
plt.xlabel("this is x 轴",size=20)
plt.ylabel("this is y 轴",size=20)
# 刻度标签
plt.xlim(-4,4)
plt.ylim(-1,1)
plt.show()
三.添加标题和图例
标题
title(label,fontdict=None,loc="center",pad=None)
主要是这里这个loc
- loc:表示标题的对齐样式,包括left,right,center
- pad:表示标题与图表顶部的距离,默认为None
图例
legend(handles,labels,loc)
- loc:图例的位置这里可以选择uper right,upper left,lowerleft,lowright ...建议选择loc=‘best’
# 标签
import numpy as np
import matplotlib.pyplot as plt
# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
x=np.linspace(-np.pi,np.pi,256,endpoint=True)
y1,y2=np.sin(x),np.cos(x)
pic=plt.plot(x,y1,x,y2)
# 设置标签
plt.xlabel("this is x 轴",size=20)
plt.ylabel("this is y 轴",size=20)
# 刻度标签
plt.xlim(-4,4)
plt.ylim(-1,1)
# 添加标题
plt.title("正弦曲线和余弦曲线",loc="left")
# 添加图例
plt.legend(pic,["sinx","cosx"],shadow=True,fancybox="blue")
plt.show()
四.显示网格
这个简单,
plt.grid()
就好了,但是里面还有一些参数
grid(b=True,axis="both",which='major')
-
which:显示网格的类型,支持major,minor,both默认是major
-
axis:表示显示哪个方向的网格,有x,y,both三个选项
-
linewidth或lw:线条的宽度
默认 :
# 标签
import numpy as np
import matplotlib.pyplot as plt
# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
y1, y2 = np.sin(x), np.cos(x)
pic = plt.plot(x, y1, x, y2)
# 设置标签
plt.xlabel("this is x 轴", size=20)
plt.ylabel("this is y 轴", size=20)
# 添加标题
plt.title("正弦曲线和余弦曲线", loc="left")
# 添加图例
plt.legend(pic, ["sinx", "cosx"], shadow=True, fancybox="blue")
plt.grid()
plt.show()
选择添加y轴的网格,修改lw为0.3
plt.grid(lw=1, axis="y")
五.添加水平参考线和参考区域
1.使用axhline添加水平参考线
axhline(y=0,xmin=0,xmax-1,linestyle="-")
-
y:表示水平参考线的坐标
-
xmin:表示水平参考线的起始位置,默认为0
-
xmax:水平参考线的终止位置,默认为1
-
linstyle:表示水平参考线的类型,默认是实线
linstyle的其他类型: http:// t.csdn.cn/Ufbvt
2.使用axvline绘制垂直参考线
axvline与axhline的语法类似,只需要修改x和y即可
示例:在上图中添加两条参考线:
# 标签
import numpy as np
import matplotlib.pyplot as plt
# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
y1, y2 = np.sin(x), np.cos(x)
pic = plt.plot(x, y1, x, y2)
# 设置标签
plt.xlabel("this is x 轴", size=20)
plt.ylabel("this is y 轴", size=20)
# 添加标题
plt.title("正弦曲线和余弦曲线", loc="left")
# 添加图例
plt.legend(pic, ["sinx", "cosx"], shadow=True, fancybox="blue")
plt.grid(lw=1, axis="y")
# 参考线
plt.axvline(x=0.5, linestyle=":", color="m")
plt.axhline(y=0.5, linestyle="--", color="y")
plt.show()
3.使用axhspan和axvspan添加参考区域
axhspan(ymin,ymax,xmin,xmax)
axvspan(ymin,ymax,xmin,xmax)
- ymin:表示水平跨度的下限
- ymax表示水平跨度的上限
- xmin:表示垂直跨度的下限
- xmax:表示垂直跨度的上限
# 标签
import numpy as np
import matplotlib.pyplot as plt
# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
y1, y2 = np.sin(x), np.cos(x)
pic = plt.plot(x, y1, x, y2)
# 设置标签
plt.xlabel("this is x 轴", size=20)
plt.ylabel("this is y 轴", size=20)
# 添加标题
plt.title("正弦曲线和余弦曲线")
# 添加图例
plt.legend(pic, ["sinx", "cosx"], shadow=True, fancybox="blue")
plt.grid(lw=1, axis="y")
# 参考线
plt.axvline(x=0.5, linestyle=":", color="m")
plt.axhline(y=0.5, linestyle="--", color="y")
# 参考区域
plt.axvspan(xmin=0.5, xmax=1, alpha=0.32)
plt.axhspan(ymin=0.2, ymax=0.5, alpha=0.32)
plt.show()
六:添加注释文本
一.指向性文本
anootate(s,xy,xytext,xycoords,arrowprops,bbox)
- s:表示注释的文本内容
- xy:表示注释的点的坐标位置,接受元组(x,y)
- xytext:表示注释文本所在的坐标位置
- xycoords:表示xy的坐标系统,默认使用与折线使用相同的坐标系统
- bbox:表示注释文本的边框的属性字典
- arrowprops:表示知识箭头的属性字典
arrowprops参数如下:
二.无指向性文本注释文本
text(x,y,s,fontdict=None,bbox)
-
x,y:表示注释文本的位置。
-
s:表示注释文本的内容。
-
fontdict:表示控制字体的字典。
-
bbox:表示注释文本的边框属性子弹
例如:
# 标签
import numpy as np
import matplotlib.pyplot as plt
# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
y1, y2 = np.sin(x), np.cos(x)
pic = plt.plot(x, y1, x, y2)
# 设置标签
plt.xlabel("x 轴", size=20)
plt.ylabel("y 轴", size=20)
# 添加标题
plt.title("正弦曲线和余弦曲线")
# 添加图例
plt.legend(pic, ["sinx", "cosx"], shadow=True, fancybox="blue")
plt.grid()
plt.annotate("最小值", xy=(-np.pi / 2, -1.0), xytext=((-np.pi / 2), -0.5), arrowprops=dict(arrowstyle="->"))
plt.text(3.1, 0.1, "y=sin(x)", bbox=dict(alpha=0.2))
plt.show()
七.添加数学公式
只要使用latetx或者katex语法即可
比如
r"$\sin x$"
就会显示为$\sin x$
这里修改下标题
# 标签
import numpy as np
import matplotlib.pyplot as plt
# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
y1, y2 = np.sin(x), np.cos(x)
pic = plt.plot(x, y1, x, y2)
# 设置标签
plt.xlabel(" x 轴", size=15)
plt.ylabel(" y 轴", size=15)
# 添加标题
plt.title(r'$\frac{\sin x}{2}$')
# 添加图例
plt.legend(pic, ["sinx", "cosx"], shadow=True, fancybox="blue")