这是我们要做的最终效果
接下来将分为3步
画出坐标与函数
import matplotlib.pyplot as plt
import numpy as np
#设置[-3,3]区间的横轴,分成50份
x=np.linspace(-3,3,50)
y=2*x+1
#画出坐标轴
plt.plot(x,y)
plt.show()
这是核心框架,之后的操作都是围绕着修改plt进行的,效果如下
修改坐标原点
在plt.show()上面加上
#将y轴分成[-5,5]的11份
new_ticks=np.linspace(-5,5,11)
plt.yticks(new_ticks)
# gca表示get current axes获得当前实例对象,个人觉得有点像java中的this
ax=plt.gca()
#隐藏右边和上边的边框
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
#ax获得x轴,并将x轴与y中的0对齐
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
#ax获得y轴,并将y轴与x中的0对齐
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
#隐藏掉y轴的0坐标,不然和x轴重了,不好看,0位于从下到上第6个
yticks = ax.yaxis.get_major_ticks()
yticks[5].label1.set_visible(False)
效果
添加annotation注解
在刚刚的代码下方加上
#在坐标系中标记处一个点
x0=1
y0=2*x0+1
plt.scatter(x0,y0)
#从点往下做垂线,从[x0,y0]到[x0,0],颜色是black 格式是--,宽度为2.5
plt.plot([x0,x0],[y0,0],'k--',lw=2.5)
plt.annotate(
r'$2x+1=%s$'%y0,xy=(x0,y0),#写上的字符串,字符串位置
xytext=(+30, -30),textcoords='offset points',#字符串相对偏移,指向的点
arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2')
# 指向的样式,弧度
)
就完成了我们的最终效果
上面的r’$2x+1=%s$'是使用用了正则表达式,通过正则表达式有很完整的体系,我们可以设置很多好看的字体的实用的功能
当然了,matplotlib的能量远不止于此,继续加油学习鸭!
完整代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019/2/15 23:34
# @Author : cs
# @decription: 简单的坐标系与函数表达
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-3,3,50)
y=2*x+1
plt.plot(x,y)
new_ticks=np.linspace(-5,5,11)
plt.yticks(new_ticks)
ax=plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
#隐藏掉y轴的0坐标,不然和x轴重了,不好看,0位于从下到上第6个
yticks = ax.yaxis.get_major_ticks()
yticks[5].label1.set_visible(False)
#在坐标系中标记处一个点
x0=1
y0=2*x0+1
plt.scatter(x0,y0)
#从点往下做垂线,从[x0,y0]到[x0,0],颜色是black 格式是--,宽度为2.5
plt.plot([x0,x0],[y0,0],'k--',lw=2.5)
plt.annotate(
r'$2x+1=%s$'%y0,xy=(x0,y0),#写上的字符串,字符串位置
xytext=(+30, -30),textcoords='offset points',#字符串相对偏移,指向的点
arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2')
# 指向的样式,弧度
)
plt.show()