【问题标题】:Seaborn stack barplot and lineplot on a single plotSeaborn 堆栈条形图和线图在单个图上
【发布时间】:2022-10-15 02:10:16
【问题描述】:
我有条形图和线图,它们共享我想一起绘制的相同 x 轴。这是图片:
我希望图表将“average_daily_price”保留为 y 轴,而忽略“num_sales”作为 y 轴。这是我想要达到的结果:
我试过以下
fig, ax1 = plt.subplots()
sns.lineplot(filtered_df, x='date', y='average_daily_price', ax=ax1)
sns.barplot(filtered_df, x="date", y="num_sales", alpha=0.5, ax=ax1)
但它给出了奇怪的结果。我也尝试过 twinx() 但无法使其工作,除了它创建了我不想要的第二个 y 轴。
【问题讨论】:
标签:
python
matplotlib
plot
seaborn
【解决方案1】:
可能您缺少“数据”关键字参数。
将其添加到您的代码中(我使用了虚拟数据,因为您没有提供任何数据)我们得到:
# imports
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib as mpl
import pandas as pd
# generate dummy data
rng = np.random.default_rng()
size=100
vals = rng.normal(loc=0.02,size=size).cumsum() + 50
date = list(range(size))
num_sales = rng.binomial(size=size,n=50,p=0.4)
# store data in a pandas DF
df = pd.DataFrame({'date': date,
'average_daily_price': vals,
'num_sales': num_sales})
# plot the data
fig, ax1 = plt.subplots(figsize=(12,3))
sns.lineplot(data=df, x='date', y='average_daily_price', ax=ax1)
sns.barplot(data=df, x="date", y="num_sales", alpha=0.5, ax=ax1)
输出是