Seaborn Barplot 和 X 轴上的格式化日期

我目前正在使用 Seaborn 和 Pandas 可视化数据集。我有一些与时间相关的数据,我想在条形图中绘制图表。

但是,我正在与 Seaborn 中的两个问题作斗争:

  1. 在 x 轴上格式化日期

  2. 只显示少数日期(因为在 6 个月的图表上标记每一天是没有意义的)

我在普通的 Matplotlib 中找到了解决我的问题的方法,即:

import pandas as pd

import seaborn as sns

import matplotlib.pyplot as plt

import matplotlib.dates as mdates


dates = pandas.date_range('1/1/2014', periods=20, freq='m')

df = pandas.DataFrame(

    data={'dt':dates, 'val':numpy.random.randn(N)}

)


fig, ax = plt.subplots(figsize=(10, 6))

ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))

ax.bar(df['dt'], df['val'], width=25, align='center')

但是,我已经在 Seaborn 中完成了大部分图表,我希望保持一致。一旦我将之前的代码转换为 Seaborn,我就无法格式化日期:


import pandas as pd

import seaborn as sns

import matplotlib.pyplot as plt

import matplotlib.dates as mdates


dates = pandas.date_range('1/1/2014', periods=20, freq='m')

df = pandas.DataFrame(

    data={'dt':dates, 'val':numpy.random.randn(N)}

)


fig, ax = plt.subplots(1,1)

ax.xaxis.set_major_formatter(mdates.DateFormatter('%y-%m'))

sns.barplot(x='dt', y='val', data=df)

fig.autofmt_xdate()

当我运行代码时,日期格式保持不变,我无法使用 DateLocator 找到任何日期。


有什么方法可以让我在 Seaborn 中以类似于 Matplotlib 和 DateLocator 和 DateFormatter 的方式格式化我的 X 轴日期?


提前致谢。


守着一只汪
浏览 221回答 1
1回答

翻翻过去那场雪

不,您不能seaborn.barplot与matplotlib.dates打勾结合使用。原因是 seaborn 条形图的刻度位于整数位置 (0,1,..., N-1)。所以它们不能被解释为日期。你有两个选择:使用 seaborn,遍历标签并将它们设置为您想要的任何内容不使用 seaborn 并具有matplotlib.dates可用的股票代码的优点(和缺点)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python