首页 > 编程问答 >将文本放置在 axvline 旁边

将文本放置在 axvline 旁边

时间:2024-08-08 04:53:23浏览次数:14  
标签:python matplotlib

我需要在图中标记某些值而不更改轴限制,例如,我想要一条垂直线 x=pi/2 来标记 max(cos(x)) 但我不想找出适当的 y 限制,我只想我的垂直线从轴的 33% 到 67%。因此,按照 matplotlib 中的 垂直和水平线 ,我正在使用 axvline

现在,我想 垂直 注释垂直线 旁边的文本(因此 annotate 已消失)。

因此我需要使用 text (参见,例如, 在垂直线旁边添加文本 )。

唉,|| |需要 text x y 数据 坐标中。是的,“ 可以使用 变换 参数 来更改坐标系”,但我需要 数据和 x 轴坐标! y 那么,怎么做我用竖排文本注释

axvline with vertical text?


可以组合使用 axvline text 和一些精心计算的坐标来实现。 axvline 会给提供绘制线,而 text 会让在指定位置添加文本。诀窍在于使用 轴坐标 来定位文本,轴坐标的范围是从 0(轴的底部/左侧)到 1(轴的顶部/右侧)。

以下是一个示例:

import matplotlib.pyplot as plt
import numpy as np

# 示例数据
x = np.linspace(0, 2*np.pi, 100)
y = np.cos(x)

fig, ax = plt.subplots()
ax.plot(x, y)

# 绘制 axvline
x_val = np.pi/2
ax.axvline(x=x_val, ymin=0.33, ymax=0.67, color='r')

# 添加垂直文本
ax.text(x_val, 0.5, "max(cos(x))", rotation=90, ha='right', va='center', transform=ax.get_xaxis_transform())

plt.show()

说明:

  1. axvline :
  2. x=x_val : 设置垂直线的 x 坐标。
  3. ymin=0.33, ymax=0.67 : 定义垂直线在 y 轴上的范围(33% 到 67%)。

  4. text :

  5. x_val : 将文本水平放置在垂直线的 x 坐标处。
  6. 0.5 : 将文本垂直放置在轴高度的中间(可以根据需要调整此值)。
  7. rotation=90 : 将文本旋转 90 度使其垂直。
  8. ha='right', va='center' : 相对于指定点对齐文本。
  9. transform=ax.get_xaxis_transform() : 这是关键部分! 此转换会告诉 matplotlib 使用 x 轴的坐标系来放置文本。这意味着 x 坐标将参考数据坐标,而 y 坐标将参考轴坐标(从 0 到 1)。

此方法使可以在不手动计算数据坐标的情况下将垂直文本放置在 axvline 旁边。

标签:python,matplotlib
From: 78845580

相关文章

  • Python & Selenium 4 & Edge 浏览器 |加载个人浏览器配置文件(包括cookie)
    使用Selenium4,我尝试加载我的个人浏览器配置文件(包括cookie),以便它可以加载到我之前登录过的网站。我正在使用边缘浏览器。在测试我的代码片段时,它似乎没有加载我的浏览器配置文件,而是创建一个新的(配置文件1)。我已确保配置文件的路径是正确的。我的代码片段:edge_opt......
  • 如何在通用 Python 类中输入 __eq__ ?
    当我定义带有泛型类型参数的类型时(例如K/V映射的键和值),我似乎无法编写合适的isinstance检查来实现__eq__:fromcollectionsimportOrderedDictfromcollections.abcimportMutableMappingfromtypingimportTypeVarK=TypeVar("K")......
  • 无法使用 devstack 安装 openstack 因为 python 版本
    我正在使用默认的python3.8.10运行./stack.sh,我收到此错误,因为我需要3.9或更高版本3.8msg错误但是当我将默认版本更改为3.9时,我收到错误没有找到模块“apt_pkg”3.9msgerror我一直在em之间来回跳动,但错误仍然存​​在(我也每次都会检查版本)......
  • Python @overload 使用联合类型会导致函数签名重叠错误
    我想编写以下重载的Python函数:fromtypingimportAny,TypeVar,overload_T1=TypeVar('_T1')_T2=TypeVar('_T2')_T3=TypeVar('_T3')@overloaddefparse_as(ty:type[_T1]|type[_T2],s:bytes)->_T1|_T2:...@overload......
  • python joblib.load 发生错误:协议 0 中的持久 ID 必须是 ASCII 字符串 在 GCP 云运行
    总体而言:我尝试使用Cloudbuild和Cloudrun构建BERT模型。我将模型(参数)和元数据(标签)保存在GCPCloudStorage中。但是,我遇到了通过joblib.load()加载metadata.bin文件的错误。我的metadata.bin文件包含UTF-8字符,但joblib.load需要ASCII字符。在......
  • Python + Svelte,如何使用本地文件系统
    总结一下,我有一个用python编写的应用程序。它在输入时需要一堆视频文件。使用一些魔法并生成合并的视频文件输出。我没有找到一个好的GUI解决方案(tkinter,QT,TUI等),所以我选择Svelte框架。但是出现了一个问题,我如何使用本地文件系统。在GUI(svelte)上,我必须上......
  • 如何在Python中绘制伪球面
    目标是使用meshgrid和numpy库生成伪球体的三维图形,但我使用下面的代码生成的图形不完整u=np.linspace(0,np.pi,50)v=np.linspace(0,2*np.pi,100)x,y=np.meshgrid(u,v)X=np.arccos(x)*np.cos(y)Y=np.arccos(x)*np.sin(y)Z=x-np.tan(x)fig=plt.f......
  • 18:Python集合属性
    #Python3集合#集合(set)是一个无序的不重复元素序列。#集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。#集合中元素必须是不可变类型,也就说里面不能是列表和字典#可以使用大括号{}创建集合,元素之间用逗号,分隔,或者也可以使用set()函数创建集合。s......
  • Python爬虫案例与实战:爬取源代码练习评测结果
    Python爬虫案例与实战:爬取源代码练习评测结果本章案例将介绍用Python编写程序实现简单网站的模拟登录,然后保持登录后的网页会话,并在会话中模拟网页表单提交,之后使用Requests库的高级特性爬取提交之后的返回结果。在HTTP网页中,如登录、提交和上传等操作一般通过向网页发送......
  • Python爬虫案例与实战:爬取豆瓣电影简介
    Python爬虫案例与实战:爬取豆瓣电影简介本章案例将介绍如何爬取豆瓣电影简介,以此帮助读者学习如何通过编写爬虫程序来批量地从互联网中获取信息。本案例中将借助两个第三方库----Requests库和BeautifulSoup库。通过Requests库获取相关的网页信息,通过BeautifulSoup库解析大......