#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')