我都是在以移动坐标的代码为基础的
1.移动坐标轴
用Matplotlib绘制的图表的默认坐标轴是在左下角的,那么怎么能让它像数学里面那种成十字形的呢
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-3,3,50)
y=2*x+1
plt.figure()#创建图
plt.plot(x,y,linewidth=1)
ax=plt.gca() #创建子图,改变坐标轴的默认显示方式主要要使用gca()方法
#spines脊梁,也就是四个边框
#隐藏右边和上边的边框,使之没有颜色
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
#默认ax里面的x轴和y轴
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
#移动x轴y轴的位置
ax.spines['bottom'].set_position(('data',1))#0,就是移到0的位置
ax.spines['left'].set_position(('data',0))#0,就是移到0的位置
#所以这个时候的x轴y轴的坐标交点就是(0,0)
#position里只有一个参数,记得是双括号
plt.show() #显示图表
2.注释的使用
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-3,3,50)
y=2*x+1
plt.figure()
plt.plot(x,y,linewidth=2,zorder=1)#蓝色的那条线
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))
############################ 添加注释 ###############################################
x0=1
y0=x0*2+1
plt.scatter(x0,y0,s=50,color='r',zorder=2)#以红色点形式显示出来
plt.plot([x0,x0],[0,y0],'k--',lw=2.5)#简写形式,这是那条虚线,k--是指k是指黑色,--虚线,lw是指线的宽度
#annotate函数显示注释,
plt.annotate(r'$2x+1=%s$'%y0,xy=(x0,y0),xycoords='data',xytext=(+30,-30),textcoords='offset points',
fontsize=16,arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=0.2'))
########################################################################################
plt.show()
上面的zorder是顺序优先级,zorder大的优先显示出来,这里点的zorder大于蓝色线的,所以看的是点压在线的上面,annotate()函数详细看这里annotate()详解
3.图例的使用
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-3,3,50)
y=2*x+1
plt.figure()
plt.plot(x,y,linewidth=1,label='yyyyyyyy')#这里需要给这个函数设置个label,也就是弄个标签
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',1))
ax.spines['left'].set_position(('data',0))
############################# 图例的使用 ##########################
plt.legend() #默认的图例
#################################################################
plt.show()
4.tick能见度
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-3,3,50)
y=2*x+1
plt.figure()
plt.plot(x,y,linewidth=10,zorder=1) #设置优先级
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))
################################### 标签的可见度 #####################
for label in ax.get_xticklabels()+ax.get_yticklabels(): #获取x,y中所有的标签
label.set_zorder(2) #z_order设置对象优先级
label.set_fontsize(12) #设置数字大小
label.set_bbox(dict(facecolor='red',edgecolor='white',alpha=0.8))
#facecolor 是指背景色 ,edgecolor是指边框色,alpha指透明度
########################################################################
plt.show()
为了增强视觉效果,我吧线条宽度设置为10,把标签背景设置为红色,平常可以设为白色