【问题标题】:Stacked Area Chart in PythonPython中的堆积面积图
【发布时间】:2021-01-18 19:23:43
【问题描述】:

我正在完成一项学校的作业,但在我的堆积面积图方面遇到了障碍。

数据相当简单:4 列与此类似:

Series id Year Period Value
LNS140000 1948 M01 3.4

我正在尝试创建一个堆积面积图,使用年份作为我的 x,价值作为我的 y,并在期间分解它。

#Stacked area chart still using unemployment data
x = d.Year
y = d.Value


plt.stackplot(x, y, labels = d['Period'])
plt.legend(d['Period'], loc = 'upper left')
plt.show()enter code here`

但是,当我这样做时,它只会拾取 M01,并且有 M01-M12。对如何完成这项工作有任何想法吗?

【问题讨论】:

    标签: python stacked-area-chart


    【解决方案1】:

    在将数据传递给 stackplot 函数之前,您需要对数据进行一些预处理。我查看了这个link 来研究一个可能适合您的案例的示例。 由于我看到了您的一行数据,因此我在数据集中添加了一些随机值。

    import pandas as pd
    import matplotlib.pyplot as plt
    dd=[[1948,'M01',3.4],[1948,'M02',2.5],[1948,'M03',1.6],
        [1949,'M01',4.3],[1949,'M02',6.7],[1949,'M03',7.8]]
    d=pd.DataFrame(dd,columns=['Year','Period','Value'])
    years=d.Year.unique()
    periods=d.Period.unique()
    
    #Now group them per period, but in year sequence
    d.sort_values(by='Year',inplace=True) # to ensure entire dataset is ordered
    pds=[]
    for p in periods:
        pds.append(d[d.Period==p]['Value'].values)
    
    plt.stackplot(years,pds,labels=periods)
    plt.legend(loc='upper left')
    plt.show()
    

    这是你想要的吗?

    【讨论】:

      【解决方案2】:

      所以我可以使用 Seaborn 来提供帮助。首先我做了一个数据透视表

      df = d.pivot(index = 'Year',
             columns = 'Period',
             values = 'Value')
      df
      

      然后我设置了seaborn

      plt.style.use('seaborn')
      sns.set_style("white")
      sns.set_theme(style = "ticks")
      
      df.plot.area(figsize = (20,9))
      plt.title("Unemployment by Year and Month\n", fontsize = 22, loc = 'left')
      plt.ylabel("Values", fontsize = 22)
      plt.xlabel("Year", fontsize = 22)
      

      【讨论】:

        【解决方案3】:

        在我看来,您遇到的问题与数据格式有关。看看这个matplotlib example 中的值是如何格式化的。我会尝试按句点 groupby 数据,或者以正确的格式 pivot 它,然后再次绘制图表。

        【讨论】:

        • 我试过按期间分组,但不完全确定我做得对。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-22
        • 2021-11-20
        • 1970-01-01
        • 2014-03-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多