【问题标题】:Python create a line plot on each type of column value in dataframePython在数据框中的每种类型的列值上创建一个线图
【发布时间】:2021-05-18 05:45:21
【问题描述】:

我有以下数据框:

gapminder

大陆有五个唯一值。

我需要创建一个看起来像这样的情节:

我已使用df.groupby().apply() 对数据的每个国家/地区应用绘图功能:

fig,ax=plt.subplots(1)

def plot_lines(df,x_axis,y_axis,**kwargs):
    ax.plot(df[x_axis],df[y_axis],**kwargs)

gapminder.groupby("country").apply(plot_lines,"year","lifeExp")

这将创建这个情节:

现在的问题是,如何在数据的每种类型的大陆上创建线图,我想在每个大陆上创建线图(year vs lifeExp)。

【问题讨论】:

    标签: python dataframe data-visualization


    【解决方案1】:

    使用subplots 创建子图

    您可以根据大陆分离数据框并分别绘制。

    使用这个。

    import matplotlib.pyplot as plt
    fig, ax = plt.subplots(1,5,figsize=(15,4))
    
    continents = ['Asia', 'Europe', 'Africa', 'Americas', 'Oceania']
    colors = ['blue', 'yellow', 'green', 'orange', 'purple']
    for i, details in enumerate(zip(continents, colors)):
      #details will contain list of tuples of continent and color
      ax[i].plot(gapminder[gapminder['continent'] == details[0]]['year'].tolist(), gapminder[gapminder['continent'] == details[0]]['lifeExp'].tolist(), c=details[1])
      ax[i].set_title(details[0])
    

    另一个简单的方法是:

    import matplotlib.pyplot as plt
    plt.figure(figsize=(15,4))
    plt.subplot(1,5,1)
    plt.plot(gapminder[gapminder['continent'] == 'Asia']['year'].tolist(), gapminder[gapminder['continent'] == 'Asia']['lifeExp'].tolist(), c = 'blue')
    plt.title('Asia')
    plt.xlabel('Year')
    
    plt.subplot(1,5,2)
    plt.plot(gapminder[gapminder['continent'] == 'Europe']['year'].tolist(), gapminder[gapminder['continent'] == 'Europe']['lifeExp'].tolist(), c = 'yellow')
    plt.title('Europe')
    plt.xlabel('Year')
    
    plt.subplot(1,5,3)
    plt.plot(gapminder[gapminder['continent'] == 'Africa']['year'].tolist(), gapminder[gapminder['continent'] == 'Africa']['lifeExp'].tolist(), c = 'green')
    plt.title('Africa')
    plt.xlabel('Year')
    
    plt.subplot(1,5,4)
    plt.plot(gapminder[gapminder['continent'] == 'Americas']['year'].tolist(), gapminder[gapminder['continent'] == 'Americas']['lifeExp'].tolist(), c = 'orange')
    plt.title('Americas')
    plt.xlabel('Year')
    
    plt.subplot(1,5,5)
    plt.plot(gapminder[gapminder['continent'] == 'Oceania']['year'].tolist(), gapminder[gapminder['continent'] == 'Oceania']['lifeExp'].tolist(), c = 'purple')
    plt.title('Oceania')
    plt.xlabel('Year')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-09
      • 1970-01-01
      • 2020-09-27
      • 1970-01-01
      • 2019-03-20
      • 2021-09-23
      • 1970-01-01
      相关资源
      最近更新 更多