【问题标题】:Multicolumn plot Seaborn and Matplotlib多列图 Seaborn 和 Matplotlib
【发布时间】:2020-07-23 05:07:37
【问题描述】:

我有这个数据表:

Date, City, Sales, PSale1, PSale2

其中 PSale1 和 PSale2 是销售的预测价格。

数据集如下所示:

Date,City,Sales,PSale1,PSale2
01/01,NYC,200,300,178
01/01,SF,300,140,100
02/01,NYC,400,410,33
02/01,SF,42,24,60

我想在 seaborn 中绘制这些数据,我正在绘制一个图表,该图表将在 x 轴上显示日期,PSale1 和 PSale2 作为 y 轴上每个城市的条形图,但我很困惑如何使用这样的数据。

据我所知,seaborn 不允许在任何轴上绘制两个变量,我应该如何处理这种情况?

【问题讨论】:

    标签: python pandas matplotlib seaborn


    【解决方案1】:
    import pandas as pd
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    data = {'Date': ['01/01', '01/01', '02/01', '02/01'],
            'City': ['NYC', 'SF', 'NYC', 'SF'],
            'Sales': [200, 300, 400, 42],
            'PSale1': [300, 140, 410, 24],
            'PSale2': [178, 100, 33, 60]}
    
    df = pd.DataFrame(data)
    
    # convert to long
    dfl = df.set_index(['Date', 'City', 'Sales']).stack().reset_index().rename(columns={'level_3': 'pred', 0: 'value'})
    
    # plot
    g = sns.FacetGrid(dfl, row='City')
    g.map(sns.barplot, 'Date', 'value', 'pred').add_legend()
    plt.show()
    


    • 合二为一
    # shape the dataframe
    dfc = df.drop(columns=['Sales']).set_index(['Date', 'City']).stack().unstack(level=1)
    dfc.columns.name = None
    
    # plot
    dfc.plot.bar(stacked=True)
    plt.xlabel('Date: Predicted')
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 2021-01-14
      • 2017-09-21
      • 2017-09-29
      • 2020-05-11
      • 2020-09-22
      • 2016-08-25
      • 1970-01-01
      • 2018-12-17
      • 2019-10-17
      相关资源
      最近更新 更多