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

在python中使用matplotlin清楚地显示特定点的x轴值

  •  1
  • Hitesh  · 技术社区  · 6 年前

    我用下面的代码将两个图绘制成一个图。我还想在图中的某个点上看到x轴的值。因为我在一个图中绘制两个图,所以我是一个点的两个值。我想清楚地看到这两种价值观。但当值越接近时,它们会相互碰撞,并且值不清晰可见。

    import matplotlib.pyplot as plt
    plt.rcParams.update(plt.rcParamsDefault)
    plt.style.use(['default'])
    a=[1.23,2.24,3.12,1.11,2.46]
    b=[1.24,2.23,3.15,1.25,2.78]
    xc=range(5)
    plt.figure(figsize=(5,5))
    for x,y in zip(xc,a):
        plt.text(x, y, '%.2f' % y, ha='center', va= 'bottom')
    for x,y in zip(xc,b):
        plt.text(x, y, '%.2f' % y, ha='center', va= 'bottom')
    plt.plot(xc,a)
    plt.plot(xc,b)
    plt.xlabel('num of Epochs')
    plt.ylabel('loss')
    plt.title('train_loss vs val_loss')
    plt.legend(['train','val'])
    

    请帮助我编写代码以便更好地可视化图形

    1 回复  |  直到 6 年前
        1
  •  1
  •   harvpan    6 年前

    改变你的 plt.text() 配置。

    import matplotlib.pyplot as plt
    plt.rcParams.update(plt.rcParamsDefault)
    plt.style.use(['default'])
    a=[1.23,2.24,3.12,1.11,2.46]
    b=[1.24,2.23,3.15,1.25,2.78]
    xc=range(5)
    plt.figure(figsize=(5,5))
    for x,y in zip(xc,a):
        plt.text(x, y, '%.2f' % y, ha='right', va= 'bottom')
    for x,y in zip(xc,b):
        plt.text(x, y, '%.2f' % y, ha='left', va= 'top')
    plt.plot(xc,a)
    plt.plot(xc,b)
    plt.xlabel('num of Epochs')
    plt.ylabel('loss')
    plt.title('train_loss vs val_loss')
    plt.legend(['train','val'])
    plt.show()
    

    输出:

    enter image description here

    你可以用 color 属性:

    for x,y in zip(xc,a):
        plt.text(x, y, '%.2f' % y, ha='right', va= 'bottom', color='blue')
    for x,y in zip(xc,b):
        plt.text(x, y, '%.2f' % y, ha='left', va= 'top', color='orange')