如何在 Pandas DataFrame 线图的 X 轴上正确显示日期?

Patricia Arquette
发布: 2024-10-28 08:49:02
原创
787 人浏览过

How to Display Dates Correctly on the X-Axis of a Pandas DataFrame Line Plot?

Pandas Dataframe 线图在 x 轴上显示日期

问题:

尝试绘制时x 轴上带有日期的 Pandas DataFrame,matplotlib 库会生成不准确的格式和与数据不正确对应的日期。

答案:

不兼容性Pandas 和 Matplotlib 的日期时间实用程序之间的差异是此问题的根本原因。 Pandas 对日期时间对象使用非标准浮点表示,这与 Matplotlib 自己的日期格式化方法不兼容。

解决方案:

要解决此问题,有有两种可能的方法:

  1. 禁用 Pandas 日期格式:

    通过在绘制 DataFrame 时设置 x_compat=True,Pandas 将使用 Matplotlib 的内部日期格式化机制,允许更精确地控制 x 轴格式。

  2. 专门使用 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!