Я пытаюсь воссоздать этот сюжет, используя Python 2.7 и Seaborn:
Как вы можете видеть, у каждого фасета есть график временных рядов для каждой страны на этом континенте, и линии соединяют только точки внутри своей страны (группы).
Вот мой код, по какой-то причине я не могу понять, как заставить линии соединяться только внутри своей группы, а не все соединяться друг с другом:
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
url = 'https://python-graph-gallery.com/wp-content/uploads/gapminderData.csv'
def add_cols(grp):
grp['popl'] = grp['pop'].apply(lambda x: x/10**5)
grp['gdp_wt'] = np.average(grp['gdpPercap'], weights = grp['pop'])
grp['pop_wt'] = sum(grp['pop'])
return grp
dat = (pd.read_csv(url)
.query('country != "Kuwait"')
.groupby(['year','continent'])
.apply(add_cols))
f = sns.FacetGrid(dat, col='continent', hue='continent')
f = f.map(plt.plot, 'year', 'gdpPercap', marker='o', group=dat.country) # Attempting to assign group here but it's not working
f = f.map(plt.plot, 'year', 'gdp_wt', c='k', marker='o')
plt.show()
plt.clf()
Вот мой текущий сюжет, и вы можете видеть, что я имею в виду под всеми связанными точками:
Этот рисунок был изначально создан с использованием R
и ggplot2
. Моей следующей попыткой будет создание черных линий с взвешенной переменной в моем наборе данных. Я не уверен, что это невозможно, используя Seaborn
. Кроме того, как известно, я знаю о модуле ggplot
, доступном для Python, но не хочу использовать его в настоящее время.