【问题标题】: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)
    

    输出是

    【讨论】:

      猜你喜欢
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-21
      • 2020-03-21
      相关资源
      最近更新 更多