Python 从数据单位到轴单位的Matplotlib转换

Python 从数据单位到轴单位的Matplotlib转换,python,matplotlib,plot,Python,Matplotlib,Plot,我正在尝试使用Matplotlib(Python库)绘制一些数据,并添加一条水平线,它不会覆盖整个轴范围,而是从中间开始,在右轴结束 我正在使用: plt.axhline(y=1.75,xmin=0.5) 其中,y以数据单位指定线的高度,但xmin(以及xmax)需要以轴单位定义(=0表示轴的起点,1表示轴的终点)。虽然我只知道我希望我的线路以数据单位开始的点,但是否有一种方法/功能可以从一个转换到另一个?只要用plt import numpy as np import matplotlib.

我正在尝试使用Matplotlib(Python库)绘制一些数据,并添加一条水平线,它不会覆盖整个轴范围,而是从中间开始,在右轴结束

我正在使用:

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

其中,y以数据单位指定线的高度,但xmin(以及xmax)需要以轴单位定义(=0表示轴的起点,1表示轴的终点)。虽然我只知道我希望我的线路以数据单位开始的点,但是否有一种方法/功能可以从一个转换到另一个?

只要用
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')
这给了我:


它确实可以工作,但我需要知道xmax,轴范围,是否有用于此的函数?显然
plt.xlim()
完成了这项工作,我会尝试让您知道。当然可以。它是
ax=plt.gca();ax.get_xlim()
@learningisamse现在是指出应该避免如此广泛地使用
pyplot
接口的好时机。我将编辑我的回复以显示您应该做什么。