代码之家  ›  专栏  ›  技术社区  ›  Batman

Matplotlib中的线端点样式

  •  1
  • Batman  · 技术社区  · 7 年前

    我想创建一个显示一系列不同时间间隔的图,这些时间间隔都是半开放的。绘制范围本身是很容易的,但我想能够做的是指定一个线条样式,自动绘制括号和圆括号,以表示间隔是半开的,而不需要手动分别绘制它们或放置文本。

    1 回复  |  直到 7 年前
        1
  •  7
  •   jedwards    7 年前

    import matplotlib as mpl
    import matplotlib.pyplot as plt
    
    def add_interval(ax, xdata, ydata, caps="  "):
        line = ax.add_line(mpl.lines.Line2D(xdata, ydata))
        anno_args = {
            'ha': 'center',
            'va': 'center',
            'size': 24,
            'color': line.get_color()
        }
        a0 = ax.annotate(caps[0], xy=(xdata[0], ydata[0]), **anno_args)
        a1 = ax.annotate(caps[1], xy=(xdata[1], ydata[1]), **anno_args)
        return (line,(a0,a1))
    
    
    fig, ax = plt.subplots()
    
    add_interval(ax, (3,7), (3,3), "()")
    add_interval(ax, (2,6), (2,2), "[]")
    add_interval(ax, (1,5), (1,1), "(]")
    
    plt.xlim((0,8))
    plt.ylim((0,4))
    
    plt.show()
    

    生产: enter image description here