【问题标题】:How to draw a line outside of an axis in matplotlib (in figure coordinates)如何在matplotlib中的轴外绘制一条线(在图形坐标中)
【发布时间】:2021-10-25 21:47:26
【问题描述】:

Matplotlib 有一个在图形坐标中写入文本的功能(.figtext())

除了画线之外,有没有办法做同样的事情?

特别是我的目标是画线以将 y 轴上的一些刻度组合在一起。

【问题讨论】:

    标签: python matplotlib plot


    【解决方案1】:
    • python 3.8.12matplotlib 3.4.3中测试
    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib.lines import Line2D
    
    x = np.linspace(0,10,100)
    y = np.sin(x)*(1+x)
    
    fig, ax = plt.subplots()
    ax.plot(x,y,label='a')
    
    # new clear axis overlay with 0-1 limits
    ax2 = plt.axes([0,0,1,1], facecolor=(1,1,1,0))
    
    x,y = np.array([[0.05, 0.1, 0.9], [0.05, 0.5, 0.9]])
    line = Line2D(x, y, lw=5., color='r', alpha=0.4)
    ax2.add_line(line)
    
    plt.show()
    

    但如果你想与刻度对齐,那为什么不使用绘图坐标呢?

    【讨论】:

    • 那会更好,但我无法让它在轴之外绘制。我想画出刻度标签的位置。 (在情节之外)(我在上面的示例中尝试了基本上是ax.add_line(line),但坐标大致是刻度线的位置......)
    • @Max 在这种情况下,只需设置line.set_clip_on(False)。您想要另一个答案来证明这一点吗?
    • 谢谢。 set_clip_on(False) 是一个很好的提示。我通过计算图形坐标中的线位置解决了我的问题,但现在我知道未来。无需再写一个答案——再次感谢。
    • @Paul 的评论本身就是一个答案。
    • 您可以使用fig.add_artist(line) 而不是ax2.add_line(line),这样您就可以处理整个图形而不是一个子图
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 2020-12-24
    相关资源
    最近更新 更多