Python создает линейный график для каждого типа значения столбца в фрейме данных

#python #dataframe #data-visualization

Вопрос:

У меня есть следующий фрейм данных:

 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")
 

Это создает этот сюжет:

введите описание изображения здесь

Теперь проблема в том, как создать линейный график для каждого типа континента данных, я хочу создать линейный график (год против срока службы) на каждом континенте.

Ответ №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')