Python——matplotlib中的乱七八糟(一)【注释,图例,tick能见度,移动坐标轴】

我都是在以移动坐标的代码为基础的

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,把标签背景设置为红色,平常可以设为白色
在这里插入图片描述

发布了15 篇原创文章 · 获赞 32 · 访问量 2937

猜你喜欢

转载自blog.csdn.net/weixin_43920952/article/details/104282457