seaborn/matplotlib 中的条形图和线图

Barplot and line plot in seaborn/matplotlib

我有一个 pandas df 如下:

Date            Col1       Col2
2022-01-01      5          10000
2022-02-01      7          65000
2022-03-01      10         9500

我想创建一个图,使得 xaxisDateCol1 是条形图,Col2 是线图。

如何在 python 中执行此操作?打开试试seaborn或者matplotlib。

Date 是一个 pd.datetime 对象。

由于这两个尺度差别很大,所以创建一个secondary y-axis

由于条形图是分类的,seaborn 将 x 日期转换为序号刻度。这意味着 matplotlib 日期格式化程序将不再适用于它们,因此最好事先格式化日期字符串,例如 dt.date or dt.strftime.

此外,由于 seaborn 将 x-axis 更改为序号刻度,因此创建带有 pointplot (but if you really want to use a lineplot 的行是最简单的,重置索引并将 x 设置为数字范围)。 =21=]

fig, ax1 = plt.subplots()
ax2 = ax1.twinx() # secondary y-axis

df['Date'] = df['Date'].dt.date # or dt.strftime('%Y-%m-%d')

sns.barplot(x='Date', y='Col1', data=df, ax=ax1) # on primary ax1
sns.pointplot(x='Date', y='Col2', color='#333', data=df, ax=ax2) # on secondary ax2

# sns.lineplot(x='index', y='Col2', color='#333', data=df.reset_index(), ax=ax2)