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

 更新时间:2023年08月16日 14:22:31   作者:小朱小朱绝不服输  
这篇文章主要介绍了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绘制二维坐标轴,设置箭头指向,文本内容的知识。

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

相关文章

  • python 使用while循环输出*组成的菱形实例

    python 使用while循环输出*组成的菱形实例

    这篇文章主要介绍了python 使用while循环输出*组成的菱形实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)

    Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)

    这篇文章主要介绍了Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-06-06
  • Python中获取当前线程名字的方法及多线程编程实践记录

    Python中获取当前线程名字的方法及多线程编程实践记录

    本文介绍了在Python中获取当前线程的名字的方法,并探讨了其在多线程编程中的重要性和实际应用,通过两个实际的代码示例,展示了如何利用多线程来并行计算斐波那契数列和下载文件,以提高程序的性能和效率,感兴趣的朋友一起看看吧
    2024-04-04
  • 基于Mediapipe+Opencv实现手势检测功能

    基于Mediapipe+Opencv实现手势检测功能

    mediaPipe,他就是一个集成好的包括人脸关键位点识别、身体关键位点识别、手部关键位点识别的一个包或者库,直接调用就能够得到它的关键位点信息,本文给大家介绍Mediapipe+Opencv实现手势检测功能,感兴趣的朋友一起看看吧
    2022-01-01
  • 如何利用itertuples对DataFrame进行遍历

    如何利用itertuples对DataFrame进行遍历

    这篇文章主要介绍了如何利用itertuples对DataFrame进行遍历问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Python中__del__方法的使用方法详细解析

    Python中__del__方法的使用方法详细解析

    __del__()称为“析构方法”,用于实现对象被销毁时所需的操作,下面这篇文章主要给大家介绍了关于Python中__del__方法的使用方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • Python3基础教程之递归函数简单示例

    Python3基础教程之递归函数简单示例

    这篇文章主要给大家介绍了关于Python3基础教程之递归函数简单示例的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python3具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • 利用 Python 让图表动起来

    利用 Python 让图表动起来

    这篇文章主要给大家分享如何利用 Python 让图表动起来,本文围绕Python 让图表动起来的话题举例matplotlib动画功能的一个例子展开文章内容,需要的朋友可以参考一下
    2021-10-10
  • Pandas数据处理加速技巧汇总

    Pandas数据处理加速技巧汇总

    Pandas 处理数据的效率还是很优秀的,相对于大规模的数据集只要掌握好正确的方法,就能让在数据处理时间上节省很多很多的时间。本文为大家汇总了一些Pandas数据处理加速技巧,需要的可以参考一下
    2022-04-04
  • Python中可变变量与不可变变量详解

    Python中可变变量与不可变变量详解

    这篇文章主要介绍了Python中可变变量与不可变变量,但Python中没有指针和引用的概念,导致很多时候参数的传递和调用的时候会产生疑问:我到底是复制了一份新的做操作还是在它指向的内存操作?下面我们就带着疑问去阅读下面文章内容吧
    2021-10-10

最新评论