【问题标题】:customize ticks label when sharex is on in matplotlib在 matplotlib 中打开 sharex 时自定义刻度标签
【发布时间】:2016-10-27 03:25:20
【问题描述】:

我有两个共享 x 轴的堆叠子图,因为我不想看到刻度标签,所以两个子图的刻度可见性都设置为 false。在绘制了两个子图之后,我想在 x-asis 上添加一些额外的刻度,仅用于第二个子图,但它们不必成为主要刻度。 我的意思是,这样做:

        #xticks = list of x points
        #xlabs = list of labels
        #secondplot.set_xticks(xticks) 
        #secondplot.set_xticklabels(xlabs)

将根据这些新刻度更改第一个 sublplot 网格,就好像它们成为新的主要刻度一样。有没有办法在第二个子图中仅标记某个 x 轴点而不影响整个图区域?谢谢你

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    我知道我迟到了,但我遇到了类似的问题,想分享我的解决方案,以防其他人需要帮助。

    您可以使用matplotlib.axes.Axes.tick_params 来控制轴的主要和次要刻度的样式。将第一个子图的刻度长度设置为 0 应该可以解决问题:

    ax.tick_params(axis="x", which="both", length=0.)
    

    axis ("x", "y" or "both") 选择设置影响的轴,which ("major", "次要”或“两者”)选择刻度类型。 当然,您也可以使用ax.set_xticks(ticks, minor=False) 设置主要和次要刻度。一个完整的例子:

    import matplotlib.pyplot as plt
    
    fig, axarr = plt.subplots(2, 1, sharex="col")
    axarr[0].plot(range(11))
    axarr[1].plot(range(11)[::-1])
    
    axarr[0].tick_params(axis="x", which="both", length=0.)
    axarr[1].set_xticks(range(0, 11, 3))
    axarr[1].set_xticks(range(0, 11), minor=True)
    
    plt.show()
    

    产生:https://i.stack.imgur.com/oc7y0.png

    【讨论】:

      【解决方案2】:

      这适用于在使用 sharex 时从单个轴上删除刻度标签,但我没有看到同时删除刻度的解决方案..

      import matplotlib.pylab as pl
      
      pl.figure()
      ax1=pl.subplot(211)
      ax1.plot([0,10],[0,10])
      
      ax2=pl.subplot(212, sharex=ax1)
      ax2.plot([0,10],[10,0])
      
      pl.setp(ax1.get_xticklabels(), visible=False)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-07-29
        • 1970-01-01
        • 1970-01-01
        • 2018-10-06
        • 2013-06-22
        • 2014-08-03
        • 2012-03-14
        相关资源
        最近更新 更多