【问题标题】:Hide tick label values but keep axis labels隐藏刻度标签值但保留轴标签
【发布时间】:2016-08-30 14:20:01
【问题描述】:

我有这张图片:

plt.plot(sim_1['t'],sim_1['V'],'k')
plt.ylabel('V')
plt.xlabel('t')
plt.show()

我想隐藏数字;如果我使用:

plt.axis('off')

...我得到这张图片:

它还会隐藏标签Vt。如何在隐藏值的同时保留标签?

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    如果你使用 matplotlib object-oriented approach,这是一个使用 ax.set_xticklabels()ax.set_yticklabels() 的简单任务。在这里,我们可以将它们设置为空列表以删除任何标签:

    import matplotlib.pyplot as plt
    
    # Create Figure and Axes instances
    fig,ax = plt.subplots(1)
    
    # Make your plot, set your axes labels
    ax.plot(sim_1['t'],sim_1['V'],'k')
    ax.set_ylabel('V')
    ax.set_xlabel('t')
    
    # Turn off tick labels
    ax.set_yticklabels([])
    ax.set_xticklabels([])
    
    plt.show()
    

    如果您还想删除刻度线和标签,可以使用 ax.set_xticks()ax.set_yticks() 并将它们也设置为空列表:

    ax.set_xticks([])
    ax.set_yticks([])
    

    【讨论】:

    • 非常适合去除刻度标签,但您仍然会得到刻度线...
    • 要删除刻度线,还要添加ax.set_yticks([])
    【解决方案2】:

    没有subplots,您可以像这样普遍删除刻度:

    plt.xticks([])
    plt.yticks([])
    

    【讨论】:

    • 这会删除刻度线和刻度线标签 - 正是我想要的!
    【解决方案3】:

    这很好用。把这个贴在plt.show()之前:

    plt.gca().axes.get_yaxis().set_visible(False)
    

    轰隆隆。

    【讨论】:

    • 谢谢,这很好用。在其他情况下,记号被保留(因为记号方向默认为 out)
    • 与 ax.set_xticklabels([]) 之类的答案不同,这个答案非常适合以下情况:使用带有 sharex 选项的子图,并且只想删除其中一个子图的刻度。
    • 或者如果你已经有了 ax 对象,ax.xaxis.set_visible(False)
    • @spinup ax.axes.get_xaxis().set_visible(False) 也有效
    • @filip 我很高兴它有帮助:)
    【解决方案4】:

    要完全删除刻度线,请使用:

    ax.set_yticks([])
    ax.set_xticks([])
    

    否则ax.set_yticklabels([])ax.set_xticklabels([]) 将保留标记。

    【讨论】:

    • 当我尝试ax.set_yticks([], []) 时,我收到以下警告:“MatplotlibDeprecationWarning: Passing the minor parameter of set_xticks() positionally is deprecated since Matplotlib 3.2; the parameter will become keyword-only two minor releases 。”什么是正确的选择?
    • @RylanSchaeffer,在您的示例ax.set_yticks([], []) 中,您传递了 2 个导致错误的空列表。为什么这样做?请参阅命令手册。如果第一个参数不应该按位置传递,请使用关键字传递它:ax.set_yticks(ticks=[])
    【解决方案5】:

    plt.gca().axes.yaxis.set_ticklabels([])

    【讨论】:

      【解决方案6】:

      不确定这是最好的方法,但您当然可以像这样替换刻度标签:

      import matplotlib.pyplot as plt
      x = range(10)
      y = range(10)
      plt.plot(x,y)
      plt.xticks(x," ")
      plt.show()
      

      在 Python 3.4 中,这会生成一个简单的线图,x 轴上没有刻度标签。一个简单的例子在这里: http://matplotlib.org/examples/ticks_and_spines/ticklabels_demo_rotation.html

      这个相关问题也有一些更好的建议: Hiding axis text in matplotlib plots

      我是 python 新手。您的里程可能在早期版本中有所不同。也许其他人可以提供帮助?

      【讨论】:

        【解决方案7】:

        这也有效。

        fig, ax = plt.subplots()
        ax.yaxis.set_major_locator(plt.NullLocator())
        ax.xaxis.set_major_formatter(plt.NullFormatter())
        

        请参阅本书了解自定义刻度的好技巧 https://jakevdp.github.io/PythonDataScienceHandbook/04.10-customizing-ticks.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-02-05
          • 1970-01-01
          • 2014-01-23
          相关资源
          最近更新 更多