python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > matplotlib绘制二维坐标轴,设置箭头指向,文本内容

python用matplotlib绘制二维坐标轴,设置箭头指向,文本内容方式

作者:小朱小朱绝不服输

这篇文章主要介绍了python用matplotlib绘制二维坐标轴,设置箭头指向,文本内容方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

使用matplotlib绘制二维坐标轴,设置箭头指向,文本内容

我们在使用matplotlib绘制图像时,默认的坐标轴是在左下角,这样对于一些曲线的显示就不太清楚。

如下:

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-10, 10, 100)
y1 = 2 * x
y2 = x * x
plt.figure()
plt.xlabel('X axis')
plt.ylabel('Y axis')
plt.plot(x, y1, linestyle='--')
plt.plot(x, y2)
plt.show()

根据X和Y绘制两条曲线,直接绘制的话,坐标轴就在左下角。

对于曲线的展示不清楚,比如我们想把(0,0)点作为坐标轴原点。

可以参考下面的方法。

1.更改坐标轴的位置

可以看到,默认绘图是四个边把图像框起来了。spine() 这个单词的意思是脊梁,就是包围图表的线条。

如下:

分为 top,bottom,left,right 上下左右四条边。我们的方法就是隐藏右边和上边,然后移动左边和下边,移动到想要的位置。

1.首先要获取整张图像的坐标,方法是

ax = plt.gca()  # 获取整张图像的坐标的对象

2.隐藏起来两条边,右边和上边

# 将右边,上边的两条边颜色设置为空 其实就相当于抹掉这两条边
ax.spines[‘right'].set_color(‘none')
ax.spines[‘top'].set_color(‘none')

3.移动左边和下边,指定为为x轴和y轴

ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')

4.设置坐标轴交点

# 设置(0,0)为两坐标轴的交点
ax.spines[‘bottom'].set_position((‘data', 0))
ax.spines[‘left'].set_position((‘data', 0))

移动坐标轴后,绘制图像结果如下:

完整代码:

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-10, 10, 100)
y1 = 2 * x
y2 = x * x
plt.figure()
plt.xlabel('X axis')
plt.ylabel('Y axis')  # 设置坐标轴的文字标签
ax = plt.gca()  # get current axis 获得坐标轴对象
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')  # 将右边 上边的两条边颜色设置为空 其实就相当于抹掉这两条边
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')  # 指定下边的边作为 x 轴   指定左边的边为 y 轴
ax.spines['bottom'].set_position(('data', 0))  # 指定 data  设置的bottom(也就是指定的x轴)绑定到y轴的0这个点上
ax.spines['left'].set_position(('data', 0))
plt.plot(x, y1, linestyle='--')
plt.plot(x, y2)
plt.show()

2. 设置箭头内容指向曲线

在绘制曲线时,我们想要用在图像箭头标注一下表达式,调用的函数如下:

annotate(s='str', xy=(x,y), xycoords='data', xytext=(l1,l2), textcoords, arrowprops)
# s为标注内容
# xy为基准点
# xycoords='data' xy的坐标是基于data的
# xytext 为注释文字的坐标位置
# textcoords='offset point'代表以这个点为基准
# arrowprops描述箭头,线的弧度等信息,箭头参数,参数类型为字典dict
# 添加标注
x0 = 1
y0 = 2 * x0 + 1
plt.scatter(x0, y0, s=50, color='b') 
plt.plot([x0, x0], [y0, y0], 'k--', lw=2.5)
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=.2'))

绘制结果如下:

完整代码:

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3, 3, 50)
y = 2*x+1
plt.figure(num=1, figsize=(8, 5))
plt.plot(x, y)
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 = 2 * x0 + 1
plt.scatter(x0, y0, s=50, color='b')
plt.plot([x0, x0], [y0, y0], 'k--', lw=2.5)
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=.2'))
plt.show()

3. 设置文本内容

有时候想在图像上设置一行文字的内容,这时候调用的函数如下:

plt.text(x, y, s)
# x,y为文字位置
# s为文字内容
plt.text(-3.7, 3, r'$This\ is\ the\ some\ text.\ \mu\ \sigma_i\ \alpha_t$',
         fontdict={'size': 16, 'color': 'r'})

绘制结果如下:

总结

以上即为python使用matplotlib绘制二维坐标轴,设置箭头指向,文本内容的知识。

仅为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文