目录
一、创建图像并设置分辨率
import matplotlib.pyplot as plt
import numpy as np
# 创建一个8*6的图,并设置分辨率为80
plt.Figure(figsize=(8,6),dpi=80)
二、绘制图像设置坐标轴的上下限
import matplotlib.pyplot as plt
import numpy as np
# 创建一个8*6的图,并设置分辨率为80
plt.Figure(figsize=(8,6),dpi=80)
# endpoint默认为True,输出结束点 为False时,不输出结束点
X=np.linspace(-np.pi,np.pi,256,endpoint=True)
C,S=np.cos(X),np.sin(X)
# 绘制余弦曲线
plt.plot(X,C,color='y',linestyle='-',linewidth=2)
# 绘制正弦曲线
plt.plot(X,S,color='r',linestyle='--',linewidth=2)
# 设置x轴的上下限
plt.xlim(-4,4)
# 设置y轴的上下限
plt.ylim(-2,2)
# 设置x轴只显示-3到3之间的记号
plt.xticks(np.linspace(-3,3,7))
# 设置y轴只显示-1到1之间的记号
plt.yticks(np.linspace(-1,1,5))
plt.show()
三、移动坐标脊柱使用gca()
说明:实际上每幅图有四条脊柱(上下左右),为了将脊柱放在图的中间,我们必须将其中的两条设置为无色,然后调整剩下的两条到合适的位置——数据空间的 0 点。
import matplotlib.pyplot as plt
import numpy as np
# 创建一个8*6的图,并设置分辨率为80
plt.Figure(figsize=(8,6),dpi=80)
# endpoint默认为True,输出结束点 为False时,不输出结束点
X=np.linspace(-np.pi,np.pi,256,endpoint=True)
C,S=np.cos(X),np.sin(X)
# 绘制余弦曲线
plt.plot(X,C,color='y',linestyle='-',linewidth=2)
# 绘制正弦曲线
plt.plot(X,S,color='r',linestyle='--',linewidth=2)
# 设置x轴的上下限
plt.xlim(-4,4)
# 设置y轴的上下限
plt.ylim(-2,2)
# 设置x轴只显示-3到3之间的记号
plt.xticks(np.linspace(-3,3,7))
# 设置y轴只显示-1到1之间的记号
plt.yticks(np.linspace(-1,1,5))
ax=plt.gca()
# 设置右边和上边的边框线颜色为none
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 把bottom设置为x轴刻度线
ax.xaxis.set_ticks_position('bottom')
# 设置bottom对应到0点
ax.spines['bottom'].set_position(('data',0))
# 把left设置为y轴刻度线
ax.yaxis.set_ticks_position('left')
# 设置left对应到0点
ax.spines['left'].set_position(('data',0))
plt.show()
四、添加图例使用label参数
import matplotlib.pyplot as plt
import numpy as np
# 创建一个8*6的图,并设置分辨率为80
plt.Figure(figsize=(8,6),dpi=80)
# endpoint默认为True,输出结束点 为False时,不输出结束点
X=np.linspace(-np.pi,np.pi,256,endpoint=True)
C,S=np.cos(X),np.sin(X)
# 绘制余弦曲线
plt.plot(X,C,color='y',linestyle='-',linewidth=2)
# 绘制正弦曲线
plt.plot(X,S,color='r',linestyle='--',linewidth=2)
# 设置x轴的上下限
plt.xlim(-4,4)
# 设置y轴的上下限
plt.ylim(-2,2)
# 设置x轴只显示-3到3之间的记号
plt.xticks(np.linspace(-3,3,7))
# 设置y轴只显示-1到1之间的记号
plt.yticks(np.linspace(-1,1,5))
ax=plt.gca()
# 设置右边和上边的边框线颜色为none
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 把bottom设置为x轴刻度线
ax.xaxis.set_ticks_position('bottom')
# 设置bottom对应到0点
ax.spines['bottom'].set_position(('data',0))
# 把left设置为y轴刻度线
ax.yaxis.set_ticks_position('left')
# 设置left对应到0点
ax.spines['left'].set_position(('data',0))
# 添加图例
plt.plot(X,C,color='y',linestyle='-',linewidth=2,label='cosine')
plt.plot(X,S,color='r',linestyle='--',linewidth=2,label='sine')
# legend显示图例位置,不加参数,系统选择合适位置
# loc参数可以控制具体位置 1234象限
plt.legend(loc=2)
plt.show()
五、注释
①有指向型文本注释 annotate()
annotate():在图中带有指向型文本注释信息,突显细节
常用参数:
- s:str, 注释信息内容
- xy:(float,float), 箭头点所在的坐标位置
- xycoords:为被注释点的坐标系属性,通常xycoords值为’data’,即以被注释的坐标点xy为参考
- xytext:(float,float), 注释内容的坐标位置
- textcoords: 设置注释文本的坐标系属性
- fontsize:设置字体大小
- weight::str or int, 设置字体线型其中字符串从小到大可选项有:
- {‘ultralight’, ‘light’, ‘normal’, ‘regular’, ‘book’, ‘medium’, ‘roman’, ‘semibold’, ‘demibold’, ‘demi’, ‘bold’, ‘heavy’, ‘extra bold’, ‘black’}
- color:str or tuple, 设置字体颜色
- arrowprops:dict,设置指向箭头的参数,字典中key值有:
- ①arrowstyle:设置箭头的样式
- ‘-’ None
- ‘->’ head_length=0.4,head_width=0.2
- ‘-[’ widthB=1.0,lengthB=0.2,angleB=None
- ‘|-|’ widthA=1.0,widthB=1.0
- ‘-|>’ head_length=0.4,head_width=0.2
- ‘<-’ head_length=0.4,head_width=0.2
- ‘<->’ head_length=0.4,head_width=0.2
- ‘<|-’ head_length=0.4,head_width=0.2
- ‘<|-|>’ head_length=0.4,head_width=0.2
- ‘fancy’ head_length=0.4,head_width=0.4,tail_width=0.4
- ‘simple’ head_length=0.5,head_width=0.5,tail_width=0.2
- ‘wedge’ tail_width=0.3,shrink_factor=0.5
- ②connectionstyle:设置两个点之间的连接路径,候选项有’arc3′,’arc’,’angle’,’angle3’,可以防止箭头被曲线内容遮挡
- ③color:设置箭头颜色,见前面的color参数。
- bbox:dict,为注释文本添加边框,其key有:
- ①boxstyle方框外形
- circle:圆圈
- darrow:双箭头
- larrow:左箭头
- rarrow:右箭头
- round:成圆角矩形
- round4:膨胀矩形
- roundtooth:波浪线矩形
- sawtooth:锯齿矩形
- square:成直角矩形
- ②facecolor(可简写为fc):设置背景颜色
- ③edgecolor(可简写为ec):设置边框线条颜色
- ④lineweight(可简写为lw):设置边框线型粗细
- ⑤alpha:设置透明度,[0,1]之间的小数,0代表完全透明,即类似③颜色设置无效。
import matplotlib.pyplot as plt
import numpy as np
# 创建一个8*6的图,并设置分辨率为80
plt.Figure(figsize=(8,6),dpi=80)
# endpoint默认为True,输出结束点 为False时,不输出结束点
X=np.linspace(-np.pi,np.pi,256,endpoint=True)
C,S=np.cos(X),np.sin(X)
# 绘制余弦曲线
plt.plot(X,C,color='y',linestyle='-',linewidth=2)
# 绘制正弦曲线
plt.plot(X,S,color='r',linestyle='--',linewidth=2)
# 设置x轴的上下限
plt.xlim(-4,4)
# 设置y轴的上下限
plt.ylim(-2,2)
# 设置x轴只显示-3到3之间的记号
plt.xticks(np.linspace(-3,3,7))
# 设置y轴只显示-1到1之间的记号
plt.yticks(np.linspace(-1,1,5))
ax=plt.gca()
# 设置右边和上边的边框线颜色为none
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 把bottom设置为x轴刻度线
ax.xaxis.set_ticks_position('bottom')
# 设置bottom对应到0点
ax.spines['bottom'].set_position(('data',0))
# 把left设置为y轴刻度线
ax.yaxis.set_ticks_position('left')
# 设置left对应到0点
ax.spines['left'].set_position(('data',0))
# 添加图例
plt.plot(X,C,color='y',linestyle='-',linewidth=2,label='cosine')
plt.plot(X,S,color='r',linestyle='--',linewidth=2,label='sine')
# legend显示图例位置,不加参数,系统选择合适位置
# loc参数可以控制具体位置 1234象限
plt.legend(loc=2)
# 设置有指向型注释文本annotate()
t=2*np.pi/3
plt.plot([t,t],[0,np.cos(t)])
plt.scatter([t,],[np.cos(t),],50,color='b')
plt.annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$',
xy=(t, np.cos(t)),
xycoords='data',
xytext=(-90, -50),
textcoords='offset points',
fontsize=16,
arrowprops=dict(arrowstyle="-|>", connectionstyle="angle3,angleA=-90,angleB=80"),
bbox=dict(boxstyle='roundtooth,
pad=0.1',
fc='w',
ec='r',
lw=2,
alpha=0.5))
plt.plot([t,t],[0,np.sin(t)])
plt.scatter([t,],[np.sin(t),],50,color='r')
plt.annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
xy=(t, np.sin(t)), xycoords='data',
xytext=(+10, +30), textcoords='offset points', fontsize=16,
arrowprops=dict(arrowstyle="-|>",
connectionstyle="arc3,rad=.3"),
bbox=dict(boxstyle='round,pad=.5',fc='w',ec='r',lw=2,alpha=0.5))
plt.show()
②无指向型文本注释 text()
text()语法:plt.text(x,y,s,family,fontsize,style,color)
- x,y代表注释内容位置
- s代表注释文本内容
- family设置字体,自带的可选项有{‘serif’, ‘sans-serif’, ‘cursive’, ‘fantasy’, ‘monospace’}
- fontsize字体大小
- style设置字体样式,可选项{‘normal’, ‘italic'(斜体), ‘oblique'(也是斜体)}
import matplotlib.pyplot as plt
import numpy as np
# 创建一个8*6的图,并设置分辨率为80
plt.Figure(figsize=(8,6),dpi=80)
# endpoint默认为True,输出结束点 为False时,不输出结束点
X=np.linspace(-np.pi,np.pi,256,endpoint=True)
C,S=np.cos(X),np.sin(X)
# 绘制余弦曲线
plt.plot(X,C,color='y',linestyle='-',linewidth=2)
# 绘制正弦曲线
plt.plot(X,S,color='r',linestyle='--',linewidth=2)
# 设置x轴的上下限
plt.xlim(-4,4)
# 设置y轴的上下限
plt.ylim(-2,2)
# 设置x轴只显示-3到3之间的记号
plt.xticks(np.linspace(-3,3,7))
# 设置y轴只显示-1到1之间的记号
plt.yticks(np.linspace(-1,1,5))
ax=plt.gca()
# 设置右边和上边的边框线颜色为none
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 把bottom设置为x轴刻度线
ax.xaxis.set_ticks_position('bottom')
# 设置bottom对应到0点
ax.spines['bottom'].set_position(('data',0))
# 把left设置为y轴刻度线
ax.yaxis.set_ticks_position('left')
# 设置left对应到0点
ax.spines['left'].set_position(('data',0))
# 添加图例
plt.plot(X,C,color='y',linestyle='-',linewidth=2,label='cosine')
plt.plot(X,S,color='r',linestyle='--',linewidth=2,label='sine')
# legend显示图例位置,不加参数,系统选择合适位置
# loc参数可以控制具体位置 1234象限
plt.legend(loc=2)
t=2*np.pi/3
plt.plot([t,t],[0,np.cos(t)])
plt.scatter([t,],[np.cos(t),],50,color='b')
# 无指向型注释文本text()
# text()语法:plt.text(x,y,s,family,fontsize,style,color)
# x,y代表注释内容位置
# s代表注释文本内容
# family设置字体,自带的可选项有{'serif', 'sans-serif', 'cursive', 'fantasy', 'monospace'}
# fontsize字体大小
# style设置字体样式,可选项{'normal', 'italic'(斜体), 'oblique'(也是斜体)}
plt.text(x=t-1,y=np.cos(t)-0.5,s=r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$',fontsize=15,family='monospace',style='normal')
plt.show()
六、保存图片savefig()
savefig()语法:
savefig(fname, *, dpi='figure', format=None, metadata=None, bbox_inches=None, pad_inches=0.1, facecolor='auto', edgecolor='auto', backend=None, **kwargs )
常用参数:
- fname:路径,可以自定义格式
- dpi:分辨率,如果是“figure”,则使用数字的dpi值
import matplotlib.pyplot as plt
import numpy as np
# 创建一个8*6的图,并设置分辨率为80
plt.Figure(figsize=(8,6),dpi=80)
# endpoint默认为True,输出结束点 为False时,不输出结束点
X=np.linspace(-np.pi,np.pi,256,endpoint=True)
C,S=np.cos(X),np.sin(X)
# 绘制余弦曲线
plt.plot(X,C,color='y',linestyle='-',linewidth=2)
# 绘制正弦曲线
plt.plot(X,S,color='r',linestyle='--',linewidth=2)
# 设置x轴的上下限
plt.xlim(-4,4)
# 设置y轴的上下限
plt.ylim(-2,2)
# 设置x轴只显示-3到3之间的记号
plt.xticks(np.linspace(-3,3,7))
# 设置y轴只显示-1到1之间的记号
plt.yticks(np.linspace(-1,1,5))
ax=plt.gca()
# 设置右边和上边的边框线颜色为none
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 把bottom设置为x轴刻度线
ax.xaxis.set_ticks_position('bottom')
# 设置bottom对应到0点
ax.spines['bottom'].set_position(('data',0))
# 把left设置为y轴刻度线
ax.yaxis.set_ticks_position('left')
# 设置left对应到0点
ax.spines['left'].set_position(('data',0))
# 添加图例
plt.plot(X,C,color='y',linestyle='-',linewidth=2,label='cosine')
plt.plot(X,S,color='r',linestyle='--',linewidth=2,label='sine')
# legend显示图例位置,不加参数,系统选择合适位置
# loc参数可以控制具体位置 1234象限
plt.legend(loc=2)
# 保存图片
plt.savefig('annotate.png',dpi=100)
plt.show()
版权声明:本文为Yangyuqing_原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。