Getting empty tick labels before showing a plot in Matplotlib

后端 未结 1 728
一个人的身影
一个人的身影 2020-12-09 09:29

I\'m experiencing a similar issue to the one reported here. I don\'t understand why the tick label text is an empty string:

import numpy as np
import matplot         


        
相关标签:
1条回答
  • 2020-12-09 09:39

    You've correctly identified the problem: before you call plt.show() nothing is explicitly set. This is because matplotlib avoids static positioning of the ticks unless it has to, because you're likely to want to interact with it: if you can ax.set_xlim() for example.

    In your case, you can draw the figure canvas with fig.canvas.draw() to trigger tick positioning, so you can retrieve their value.

    Alternatively, you can explicity set the xticks that will in turn set the the axis to FixedFormatter and FixedLocator and achieve the same result.

    import numpy as np
    import matplotlib.pyplot as plt
    
    x = np.linspace(0,2*np.pi,100)
    y = np.sin(x)**2
    
    fig, ax = plt.subplots()
    
    ax.plot(x,y)
    ax.set_xlim(0,6)
    
    # Must draw the canvas to position the ticks
    fig.canvas.draw()
    # Or Alternatively
    #ax.set_xticklabels(ax.get_xticks())
    
    labels = ax.get_xticklabels()
    for label in labels:
        print(label.get_text())
    
    plt.show()
    
    Out:
    0
    1
    2
    3
    4
    5
    6
    
    0 讨论(0)
提交回复
热议问题