Search code examples
pythonlabelsizeaxis

How adjust picture size to show dates on x axis


I am working on the following dataset (actually the following ones are just the first ten observations)

Update  Pb95    Pb98    diesel  heating oil
0   6/2/2022    7519    8311    7172    5582
1   6/1/2022    7406    8194    6912    5433
2   5/31/2022   7213    7950    6754    5394
3   5/28/2022   7129    7864    6711    5360
4   5/27/2022   7076    7798    6704    5366
5   5/26/2022   6895    7504    6502    5182
6   5/25/2022   6714    7306    6421    5130
7   5/24/2022   6770    7358    6405    5153
8   5/21/2022   6822    7421    6457    5216
9   5/20/2022   6826    7430    6523    5281

I have tried plotting them by using the following code:

import matplotlib.pyplot as plt

plt.plot(df['Update'], df['Pb95'], label='sales', linewidth=3) 

#add title and axis labels
plt.title('Sales by Date')
plt.xlabel('Date')
plt.ylabel('Sales')

#add legend
plt.legend()

#display plot
plt.show() 

By obtaining the following picture

enter image description here

As you could see, dates are reported overlapped. Could you please suggest a possible solution to make this picture clearer (by rotating them 45 degrees, for instance, or other solutions)?

Thanks


Solution

  • import pandas as pd
    import matplotlib.pyplot as plt
    import matplotlib.dates
    
    
    fig, ax = plt.subplots()
    ax.plot(df['Update'], df['Pb95'], label='sales', linewidth=3)
    locator = matplotlib.ticker.LinearLocator(4)
    ax.xaxis.set_major_locator(locator)
    fig.autofmt_xdate(rotation=45)
    
    plt.title('Sales by Date')
    plt.xlabel('Date')
    plt.ylabel('Sales')
    
    plt.legend()
    
    plt.show()
    

    Uses locator to show four values on the x-axis. The autofmt_xdate function is used to set the angle to 45 of these values. enter image description here