X轴上的Seaborn条形图和格式设置日期

时间:2019-06-17 20:40:39

标签: python pandas seaborn

我目前正在使用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找到任何日期。

我是否可以通过类似于Matplotlib和DateLocator和DateFormatter的方式格式化Seaborn中X轴的日期?

谢谢。

1 个答案:

答案 0 :(得分:0)

否,您不能将seaborn.barplotmatplotlib.dates勾号一起使用。原因是海底条形图的刻度线位于整数位置(0,1,...,N-1)。因此它们不能解释为日期。

您有两个选择:

  1. 使用seaborn,并遍历标签并将其设置为所需的任何内容
  2. 不使用seaborn,并且具有matplotlib.dates行情自动收录器的优点(和缺点)。