目录
- 1.1 使用matplotlib.pyplot中的title()函数设置图像标题
- 1.2 使用matplotlib.pyplot中的annotate()函数标注文字
- 1.3 使用matplotlib.pyplot中的text()函数设置文字说明
- 1.4 使用matplotlib.pyplot中的legend()函数和plot中的label参数一起作用添加图例
- 1.5 使用matplotlib.pyplot中的axis()函数指定坐标范围
- 1.6 使用matplotlib.pyplot中的grid()函数添加网格
- 1.7 使用matplotlib.pyplot中的spines()函数移动脊柱
- 1.8 绘制综合图
- 1.9 绘制正弦余弦函数曲线
- 1.9.1 设置在线上标记的特殊符号
- 1.9.2 设置x,y轴刻度标签
- 1.9.3 设置标签的位置和字体
- 1.9.4 为X轴或Y轴分别添加“X”、“Y”标签
- 1.9.5 为图添加标题
- 1.9.6 Spines为图移动坐标轴位置
- 1.9.7 Spines为图移动坐标轴位置
- 1.9.8 显示被曲线挡住的部分
1.1 使用matplotlib.pyplot中的title()函数设置图像标题
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [3, 6, 7, 9, 2]
fig, ax = plt.subplots(1, 1)
ax.plot(x, y, label='trend')
ax.set_title('title test', fontsize=12, color='r', bbox={'facecolor': 'red', 'alpha': 0.5, 'pad': 10})
plt.show()
1.2 使用matplotlib.pyplot中的annotate()函数标注文字
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 6)
y = x * x
plt.plot(x, y, marker='o')
for xy in zip(x, y):
plt.annotate("(%s,%s)" % xy, xy=xy, xytext=(-20, 10), textcoords='offset points')
plt.show()
1.3 使用matplotlib.pyplot中的text()函数设置文字说明
import matplotlib.pyplot as plt
fig = plt.figure()
plt.axis([0, 10, 0, 10]) #设置x,y轴坐标范围都为0到10
t = "This is a really long string that I'd rather have wrapped so that it doesn't go outside of the figure, but if it's long enough it will go off the top or bottom!"
plt.text(4, 1, t, ha='left', rotation=15, wrap=True) #ha为水平对齐方式,rotation为逆时针旋转角度,wrap:是否在图中显示文字说明
plt.text(6, 5, t, ha='left', rotation=15, wrap=True)
plt.text(5, 5, t, ha='right', rotation=-15, wrap=True)
plt.text(5, 10, t, fontsize=18, style='oblique', ha='center',va='top',wrap=True)
plt.text(3, 4, t, family='serif', style='italic', ha='right', wrap=True)
plt.text(-1, 0, t, ha='left', rotation=-15, wrap=True)
plt.show()
1.4 使用matplotlib.pyplot中的legend()函数和plot中的label参数一起作用添加图例
import matplotlib.pyplot as plt
plt.plot([1,2,3], [1,2,3], 'go-', label='line 1', linewidth=2)
plt.plot([1,2,3], [1,4,9], 'rs', label='line 2')
plt.legend(loc='best')
plt.show()
1.5 使用matplotlib.pyplot中的axis()函数指定坐标范围
import matplotlib.pyplot as plt
plt.plot([1,2,3], [1,2,3], 'go-', label='line 1', linewidth=2)
plt.plot([1,2,3], [1,4,9], 'rs', label='line 2')
plt.axis([0, 4, 0, 10])
plt.legend()
plt.show()
使用 xlabel() 和 ylabel() 函数为图添加 x,y 坐标轴说明。
import matplotlib.pyplot as plt
plt.plot([1,2,3], [1,2,3], 'go-', label='line 1', linewidth=2)
plt.plot([1,2,3], [1,4,9], 'rs', label='line 2')
plt.axis([0, 4, 0, 10])
plt.xlabel('data x')
plt.ylabel('target y')
plt.title('test plot')
plt.legend()
plt.show()
1.6 使用matplotlib.pyplot中的grid()函数添加网格
import matplotlib.pyplot as plt
plt.grid()
plt.legend(['3','4','5'], loc='upper right')
plt.show()
1.7 使用matplotlib.pyplot中的spines()函数移动脊柱
import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.gca()
ax1.spines['right'].set_color('none')
ax1.spines['top'].set_color('none')
ax1.xaxis.set_ticks_position('bottom')
ax1.spines['bottom'].set_position(('data', 0))
ax1.yaxis.set_ticks_position('left')
ax1.spines['left'].set_position(('data', 0))
ax1.set_xlim([-3, 3])
ax1.set_ylim([-3, 3])
plt.show()
1.8 绘制综合图
import matplotlib.pyplot as plt
fig=plt.figure() #创建一张图
fig.suptitle('bold figure suptitle',fontsize=14,fontweight='bold') #为总图设置标题
ax=fig.add_subplot(111) #创建一个子图
fig.subplots_adjust(top=0.85) #调整图高度
ax.set_title('axes title') #设置子图标题
ax.set_xlabel('xlabel') #设置子图x轴标签
ax.set_ylabel('ylabel') #设置子图y轴标签
ax.text(3,8,'boxed italics text in data coords',style='italic',
bbox={'facecolor':'red','alpha':0.5,'pad':10}) #设置子图文字标注
ax.text(2,6,r'an equation: $E=mc^2$',fontsize=15)
ax.text(0.95,0.01,'colored text in baxes coords',verticalalignment='bottom',
horizontalalignment='right',transform=ax.transAxes,color='green',fontsize=15)
ax.plot([2],[1],'o') #为子图画(2,1)这个点的图,图形状为点状
ax.annotate('annotate',xy=(2,1),xytext=(3,4),arrowprops=dict(facecolor='yellow',shrink=0.05)) #为(2,1)点添加注释
ax.axis([0,10,0,10]) #为x,y轴设置坐标范围
plt.show()
1.9 绘制正弦余弦函数曲线
import numpy as np
import matplotlib.pyplot as plt
# 使用np中的linspace函数,创建一个值在负π到π之间,大小为256的一维数组x,并使用np的sin和cos函数对x取正弦余弦值并分别赋给C,S
x=np.linspace(-np.pi,np.pi,256,endpoint=True)
C,S=np.sin(x),np.cos(x)
# 使用plt.plot()函数分别传入参数x,C绘制正弦图,传入参数x,S绘制正余弦图,使用plt.show()函数显示图像
plt.plot(x,C)
plt.plot(x,S)
plt.show()
1.9.1 设置在线上标记的特殊符号
通过调整 plt.plot() 的默认参数 color、linewidth、linestyle、marker 对线条的颜色,宽度,样式、在线上标记的特殊符号进行设置。
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-np.pi,np.pi,256,endpoint=True)
C,S=np.sin(x),np.cos(x)
plt.plot(x,C,color='red',linewidth=2.5,linestyle='-',marker='.')
plt.plot(x,S,color='blue',linewidth=2.5,linestyle='-',marker='x')
plt.show()
1.9.2 设置x,y轴刻度标签
使用 plt.axis() 调整坐标范围,使用 plt.xlim() 和 plt.ylim() 调整 x,y 轴范围,使用 plt.xticks,plt.yticks 设置 x,y 轴刻度标签。
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-np.pi,np.pi,256,endpoint=True)
C,S=np.sin(x),np.cos(x)
plt.plot(x,C,color='red',linewidth=2.5,linestyle='-')
plt.plot(x,S,color='blue',linewidth=2.5,linestyle='-')
plt.axis([-4,4,-1.3,1.3])
plt.xlim(x.min()*1.1,x.max()*1.1)
plt.ylim(C.min()*1.1,C.max()*1.1)
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r'$-\pi$',r'$-\pi/2$',r'$0$',r'$+\pi/2$',r'$+\pi$'])
plt.yticks([-1,0,1],[r'$-1$',r'$0$',r'$+1$'])
plt.show()
1.9.3 设置标签的位置和字体
通过在 plt.plot() 函数中设置 label 标签,为绘制的正弦余弦图分别添加 sin(t)、cos(t) 图例,并使用 plt.legend() 函数设置标签的位置和字体。
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-np.pi,np.pi,256,endpoint=True)
C,S=np.sin(x),np.cos(x)
plt.plot(x,C,color='red',linewidth=2.5,linestyle='-',label=r'$sin(t)$')
plt.plot(x,S,color='blue',linewidth=2.5,linestyle='-',label=r'$cos(t)$')
plt.legend(loc='upper left',frameon=False)
plt.axis([-4,4,-1.3,1.3])
plt.xlim(x.min()*1.1,x.max()*1.1)
plt.ylim(C.min()*1.1,C.max()*1.1)
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r'$-\pi$',r'$-\pi/2$',r'$0$',r'$+\pi/2$',r'$+\pi$'])
plt.yticks([-1,0,1],[r'$-1$',r'$0$',r'$+1$'])
plt.show()
1.9.4 为X轴或Y轴分别添加“X”、“Y”标签
通过 plt.xlabe l函数和 plt.ylabel 函数为 X 轴或 Y 轴分别添加 “X”、“Y” 标签。
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-np.pi,np.pi,256,endpoint=True)
C,S=np.sin(x),np.cos(x)
plt.plot(x,C,color='red',linewidth=2.5,linestyle='-',label=r'$sin(t)$')
plt.plot(x,S,color='blue',linewidth=2.5,linestyle='-',label=r'$cos(t)$')
plt.legend(loc='upper left',frameon=False)
plt.axis([-4,4,-1.3,1.3])
plt.xlim(x.min()*1.1,x.max()*1.1)
plt.ylim(C.min()*1.1,C.max()*1.1)
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r'$-\pi$',r'$-\pi/2$',r'$0$',r'$+\pi/2$',r'$+\pi$'])
plt.yticks([-1,0,1],[r'$-1$',r'$0$',r'$+1$'])
plt.xlabel("X")
plt.ylabel("Y")
plt.show()
1.9.5 为图添加标题
通过 plt.title() 函数为正弦余弦图添加 “ The sine and cosine on the same graph” 标题。
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-np.pi,np.pi,256,endpoint=True)
C,S=np.sin(x),np.cos(x)
plt.plot(x,C,color='red',linewidth=2.5,linestyle='-',label=r'$sin(t)$')
plt.plot(x,S,color='blue',linewidth=2.5,linestyle='-',label=r'$cos(t)$')
plt.legend(loc='upper left',frameon=False)
plt.axis([-4,4,-1.3,1.3])
plt.xlim(x.min()*1.1,x.max()*1.1)
plt.ylim(C.min()*1.1,C.max()*1.1)
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r'$-\pi$',r'$-\pi/2$',r'$0$',r'$+\pi/2$',r'$+\pi$'])
plt.yticks([-1,0,1],[r'$-1$',r'$0$',r'$+1$'])
plt.xlabel("X")
plt.ylabel("Y")
plt.title("The sine and cosine on the same gragh.")
plt.show()
1.9.6 Spines为图移动坐标轴位置
使用 plt.gca() 函数获取当前轴 ax,然后使用 ax 的 spines 中 set_color 设置颜色(无)使得右上两边的轴线为透明色。 进而我们移动下面和左边的线到坐标 0。
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
C, S = np.sin(x), np.cos(x)
ax = plt.gca()
ax.spines['right'].set_color('none') # set_color设置右边轴线为透明色
ax.spines['top'].set_color('none') # set_color设置上边轴线为透明色
ax.xaxis.set_ticks_position('bottom') # 移动下边边框线,相当于移动x轴
ax.spines['bottom'].set_position(
('data', 0)) # set_position设置轴位置:'center' -> ('axes',0.5);'zero' -> ('data', 0.0;('data',anyvalue)
ax.yaxis.set_ticks_position('left') # 移动左边边框线,相当于移动y轴
ax.spines['left'].set_position(('data', 0))
plt.plot(x, C, color='red', linewidth=2.5, linestyle='-', label=r'$sin(t)$')
plt.plot(x, S, color='blue', linewidth=2.5, linestyle='-', label=r'$cos(t)$')
plt.legend(loc='upper left', frameon=False)
plt.axis([-4, 4, -1.3, 1.3])
plt.xlim(x.min() * 1.1, x.max() * 1.1)
plt.ylim(C.min() * 1.1, C.max() * 1.1)
plt.xticks([-np.pi, -np.pi / 2, 0, np.pi / 2, np.pi], [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
plt.yticks([-1, 0, 1], [r'$-1$', r'$0$', r'$+1$'])
plt.xlabel("X")
plt.ylabel("Y")
plt.title("The sine and cosine on the same gragh.")
plt.show()
1.9.7 Spines为图移动坐标轴位置
使用 plt.annotate 函数为 2*π/3 对应的正弦余弦表示出来,并使用 savefig() 方法保存图片。
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-np.pi,np.pi,256,endpoint=True)
C,S=np.sin(x),np.cos(x)
ax=plt.gca()
ax.spines['right'].set_color('none') #set_color设置右边轴线为透明色
ax.spines['top'].set_color('none') #set_color设置上边轴线为透明色
ax.xaxis.set_ticks_position('bottom') #移动下边边框线,相当于移动x轴
ax.spines['bottom'].set_position(('data',0)) #set_position设置轴位置:'center' -> ('axes',0.5);'zero' -> ('data', 0.0;('data',anyvalue)
ax.yaxis.set_ticks_position('left') #移动左边边框线,相当于移动y轴
ax.spines['left'].set_position(('data',0))
plt.plot(x,C,color='red',linewidth=2.5,linestyle='-',label=r'$sin(t)$')
plt.plot(x,S,color='blue',linewidth=2.5,linestyle='-',label=r'$cos(t)$')
plt.legend(loc='upper left',frameon=False)
plt.axis([-4,4,-1.3,1.3])
plt.xlim(x.min()*1.1,x.max()*1.1)
plt.ylim(C.min()*1.1,C.max()*1.1)
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r'$-\pi$',r'$-\pi/2$',r'$0$',r'$+\pi/2$',r'$+\pi$'])
plt.yticks([-1,0,1],[r'$-1$',r'$0$',r'$+1$'])
plt.title("The sine and cosine on the same gragh.")
t=2*np.pi/3
plt.plot([t,t],[0,np.sin(t)],linewidth=1.5,linestyle='--',color='red')
plt.scatter([t,],[np.sin(t),],50,color='red')
plt.annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',xy=(t,np.sin(t)),xycoords='data',xytext=(+20,+20),textcoords='offset points',fontsize=16,arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))
plt.plot([t,t],[0,np.cos(t)],color='blue',linewidth=1.5,linestyle='--')
plt.scatter([t,],[np.cos(t),],50,color='blue')
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='arc3,rad=.2'))
plt.savefig('test',dpi=600)#plt.savefig()将输出图形存储为文件,默认为png格式,可以通过dpi修改像素
plt.show()
1.9.8 显示被曲线挡住的部分
添加一个白色的半透明底色,把坐标轴上的记号标签被曲线挡住的部分显示出来。
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
C, S = np.sin(x), np.cos(x)
ax = plt.gca()
ax.spines['right'].set_color('none') # set_color设置右边轴线为透明色
ax.spines['top'].set_color('none') # set_color设置上边轴线为透明色
ax.xaxis.set_ticks_position('bottom') # 移动下边边框线,相当于移动x轴
ax.spines['bottom'].set_position(
('data', 0)) # set_position设置轴位置:'center' -> ('axes',0.5);'zero' -> ('data', 0.0;('data',anyvalue)
ax.yaxis.set_ticks_position('left') # 移动左边边框线,相当于移动y轴
ax.spines['left'].set_position(('data', 0))
plt.plot(x, C, color='red', linewidth=2.5, linestyle='-', label=r'$sin(t)$')
plt.plot(x, S, color='blue', linewidth=2.5, linestyle='-', label=r'$cos(t)$')
plt.legend(loc='upper left', frameon=False)
plt.axis([-4, 4, -1.3, 1.3])
plt.xlim(x.min() * 1.1, x.max() * 1.1)
plt.ylim(C.min() * 1.1, C.max() * 1.1)
plt.xticks([-np.pi, -np.pi / 2, 0, np.pi / 2, np.pi], [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
plt.yticks([-1, 0, 1], [r'$-1$', r'$0$', r'$+1$'])
plt.title("The sine and cosine on the same gragh.")
t = 2 * np.pi / 3
plt.plot([t, t], [0, np.sin(t)], linewidth=1.5, linestyle='--', color='red')
plt.scatter([t, ], [np.sin(t), ], 50, color='red')
plt.annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$', xy=(t, np.sin(t)), xycoords='data', xytext=(+20, +20),
textcoords='offset points', fontsize=16, arrowprops=dict(arrowstyle='->', connectionstyle='arc3,rad=.2'))
plt.plot([t, t], [0, np.cos(t)], color='blue', linewidth=1.5, linestyle='--')
plt.scatter([t, ], [np.cos(t), ], 50, color='blue')
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='arc3,rad=.2'))
for label in ax.get_xticklabels() + ax.get_yticklabels():
label.set_fontsize(16)
label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.06))
plt.savefig('test', dpi=600) # plt.savefig()将输出图形存储为文件,默认为png格式,可以通过dpi修改像素
plt.show()