1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| import matplotlib.pyplot as plt import numpy as np x=np.linspace(-5,5,100) y1=2*x+4 y2=x**2
plt.figure()
#加标题 plt.suptitle plt.suptitle('figure1')
#设定x,y轴名称 plt.xlable,plt.ylabel plt.xlabel('x') plt.ylabel('y')
#设定x,y轴的范围 plt.xlim,plt.ylim # plt.xlim((-5,5)) # plt.ylim((-10,10))
#设置坐标轴的单位距离和单元名称 # plt.xticks(np.linspace(-5,5,11)) # plt.yticks(np.linspace(-5,25,31)) # plt.yticks([-10,-5,0,5,12],[r'$very\ bad$',r'$bad\ \alpha$',r'$ok$',r'$good$',r'$very\ good$'])
#设置轴的位置 ''' 1.获得当前四边轴线(get current axis)plt.gca() 2.去掉右边和上边的轴线 ax.spines['right and top'].set_color('none') 3.令x为下边轴线, ax.xaxis.set_ticks_positions('bottom') 令y为左边轴线, ax.yaxis.set_ticks_positions('left') 4.设置原点坐标((0,0)为原点) ax.spines['bottom'].set_position(('data',0)) ax.spines['left'].set_position(('data',0)) ''' ax=plt.gca() ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') ax.xaxis.set_ticks_position('bottom') ax.yaxis.set_ticks_position('left') ax.spines['bottom'].set_position(('data',0)) ax.spines['left'].set_position(('data',0)) # ax.derection # ax.spines['bottom'].set_axisline_style("-|>") # ax.spines['bottom'].set_axisline_style("-|>")
#控制线条的颜色,宽度,和linestyle[solid,dotted,dashed,dashdot] l2,=plt.plot(x,y2) l1,=plt.plot(x,y1,linestyle='solid',linewidth=1.0,color='green',)
#设置图例 plt.legend() #无参数 已在plt.plot(label='y1')中加入label参数 plt.legend(handles=[l1,l2],labels=['y1','y2'],loc='best')
#加注解 annotation,比如给线的交点加注解 #标出 y1=2*x+4 和 y2=x**2 的交点 #利用零点定理找“近似”交点,(近似由于线条是由拟合的,真正的零点不一定生成了) idx = np.argwhere(np.diff(np.sign(y1-y2))).flatten() plt.plot(x[idx], y2[idx], 'ro',color='red')
for i in range(len(idx)): plt.plot([x[idx][i],x[idx][i]],[y2[idx][i],0],'k--',lw=2.5)
#加annotation plt.annotate(r'(%s,%s)'%(round(x[idx][1],1),round(y2[idx][1],1)),xy=(x[idx][1],y2[idx][1]),xycoords='data', xytext=(+4,+3),fontsize=10, arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=0.2'))
#加一些说明 plt.text(-4,5,r'$this\ is\ some\ text\ \sigma_i\ \alpha$')
#ticks能见度 for label in ax.get_xticklabels()+ax.get_yticklabels(): label.set_fontsize(12) label.set_bbox(dict(facecolor='pink',edgecolor='None',alpha=0.7))
plt.show()
|