When creating a line plot of a Pandas Dataframe with datetime values on the x-axis, it's important to consider the compatibility between Pandas and matplotlib datetime handling. By default, Pandas and matplotlib use different datetime formats, which can lead to issues with axis formatting.
Problem Background:
Your code snippet illustrates this issue: using pd.to_datetime to convert the 'date' column to datetime objects and setting it as the index creates a Pandas datetime axis. However, adding the DateFormatter directly to this axis doesn't produce the expected date formatting.
Ursache:
The mismatch arises because Pandas uses its own datetime format, which differs from the one used by matplotlib. Attempting to mix these formats can lead to unexpected results.
Solution:
To address this incompatibility, you have two options:
1. Enable x-axis compatibility in Pandas:
Add x_compat=True when plotting the dataframe. This instructs Pandas to use matplotlib's datetime formatting for the x-axis.
df.plot(x_compat=True)
2. Use matplotlib directly for datetime formatting:
Instead of using Pandas' built-in plotting capabilities, you can create a plot using matplotlib directly. This allows you to use matplotlib's full range of datetime formatting options.
plt.plot(df['date'], df['ratio1'])
Using the DateFormatter from matplotlib's dates module, you can achieve the desired date formatting:
ax = df.plot(x_compat=True, figsize=(6, 4)) ax.xaxis.set_major_locator(dates.DayLocator()) ax.xaxis.set_major_formatter(dates.DateFormatter('%d\n\n%a')) ax.invert_xaxis() ax.get_figure().autofmt_xdate(rotation=0, ha="center")
By utilizing these methods, you can ensure that the x-axis of your line plot displays dates properly, avoiding any inconsistencies between Pandas and matplotlib datetime handling.
The above is the detailed content of How to Display Dates on the X-Axis of a Pandas Line Plot?. For more information, please follow other related articles on the PHP Chinese website!