Matplotlib从数据单位转换为轴单位

0 投票
1 回答
3174 浏览
提问于 2025-04-20 01:23

我正在使用Matplotlib这个Python库来绘制一些数据,并想添加一条水平线。这条线不需要覆盖整个坐标轴的范围,而是从中间开始,一直到右边的坐标轴结束。

我使用的是:

plt.axhline(y=1.75,xmin=0.5)

在这里,y指定了线的高度,单位是数据单位,但xmin和xmax需要用坐标轴的单位来定义(=0表示坐标轴的起点,=1表示坐标轴的终点)。不过我只知道我想让这条线从哪个数据点开始,有没有什么方法或函数可以把这两种单位转换过来呢?

1 个回答

2

只需要用 plt 来画一条线

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0.2,10,100)
fig, ax = plt.subplots()
ax.plot(x, 1/x)
ax.plot(x, np.log(x))
ax.set_aspect('equal')
ax.grid(True, which='both')

y = 1.25
xmin = 2
xmax = ax.get_xlim()[1]
ax.plot([xmin, xmax], [y, y], color='k')

这样就能得到:

示例图

撰写回答