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
我想创建一个图,使得 xaxis
是 Date
,Col1
是条形图,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)
我有一个 pandas df 如下:
Date Col1 Col2
2022-01-01 5 10000
2022-02-01 7 65000
2022-03-01 10 9500
我想创建一个图,使得 xaxis
是 Date
,Col1
是条形图,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)