Pandas Dataframe 线图在 x 轴上显示日期
问题:
尝试绘制时x 轴上带有日期的 Pandas DataFrame,matplotlib 库会生成不准确的格式和与数据不正确对应的日期。
答案:
不兼容性Pandas 和 Matplotlib 的日期时间实用程序之间的差异是此问题的根本原因。 Pandas 对日期时间对象使用非标准浮点表示,这与 Matplotlib 自己的日期格式化方法不兼容。
解决方案:
要解决此问题,有有两种可能的方法:
禁用 Pandas 日期格式:
通过在绘制 DataFrame 时设置 x_compat=True,Pandas 将使用 Matplotlib 的内部日期格式化机制,允许更精确地控制 x 轴格式。
专门使用 Matplotlib 进行绘图和格式化:
而不是依赖在 Pandas 上进行日期绘图,您可以使用 Matplotlib 自己的方法来处理日期值和格式。这提供了更大的灵活性,并允许您根据需要自定义日期格式。
以下是演示这两种方法的更新示例:
<code class="python">import pandas as pd import matplotlib.pyplot as plt import matplotlib.dates as dates df = pd.DataFrame({'date': ['20170527', '20170526', '20170525'], 'ratio1': [1, 0.98, 0.97]}) df['date'] = pd.to_datetime(df['date']) usePandas = True # Either use Pandas if usePandas: df = df.set_index('date') 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") # or use Matplotlib else: fig, ax = plt.subplots(figsize=(6, 4)) ax.plot('date', 'ratio1', data=df) ax.xaxis.set_major_locator(dates.DayLocator()) ax.xaxis.set_major_formatter(dates.DateFormatter('%d\n\n%a')) fig.invert_xaxis() plt.show()</code>
通过使用其中任何一种方法,您可以有效地在 Pandas DataFrame 图的 x 轴上显示具有准确格式的日期时间值。
以上是如何在 Pandas DataFrame 线图的 X 轴上正确显示日期?的详细内容。更多信息请关注PHP中文网其他相关文章!