【问题标题】:Matplotlib conversion from data units to axis unitsMatplotlib 从数据单位到轴单位的转换
【发布时间】:2016-07-01 05:05:50
【问题描述】:

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

我正在使用:

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

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

【问题讨论】:

    标签: python matplotlib plot


    【解决方案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()
    • @Learningisamess 现在是指出您应该避免如此广泛使用pyplot 接口的好时机。我将编辑我的回复以显示您应该做什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-07
    • 1970-01-01
    • 2023-01-03
    • 2014-12-27
    • 2016-02-14
    相关资源
    最近更新 更多