Как правильно построить фрейм данных в ggplot для построения разных графиков - PullRequest
0 голосов
/ 07 июня 2019

Я провожу много симуляций в области электрических систем с использованием PSS / E.В настоящее время я нахожусь на этапе обработки захваченных данных для их визуализации.

Я уже исследовал через Интернет.Я также видел много примеров того, как строить различные графики с использованием ggplot в python, но ни один из этих руководств или примеров, похоже, не слишком заботится о построении фрейма данных.

Следующий код отображаетДиаграмма, как и ожидалось для меня.

    def plot_default_example(self):
        islands = ['LPA', 'LPA', 'LPA', 'LPA', 'LPA', 'LPA',
                   'TNF', 'TNF', 'TNF', 'TNF', 'TNF', 'TNF',
                   'GOM', 'GOM', 'GOM', 'GOM', 'GOM', 'GOM']
        years = [2014, 2015, 2016, 2017, 2018, 2019,
                 2014, 2015, 2016, 2017, 2018, 2019,
                 2014, 2015, 2016, 2017, 2018, 2019]
        population = []
        for _ in range(0, 18):
            population.append(randint(1500, 15000))
        print years
        print population
        df = pd.DataFrame({'island': islands, 'years': years, 'population': population})
        plt = ggplot(df, aes(x='years', y='population', color='island')) +\
            geom_line() + labs(title='Random Population in 3 of the Canary Islands from 2014 to 2019')
        print plt

plot of random population over a few years in 3 of the canary islands

Как вы могли догадаться, в кадре данных много избыточного, потому что годы и островаповторил, но это единственный способ, которым я знаю, как это сделать.

Мне было интересно, есть ли способ избежать такой избыточности.

Спасибо за любую помощь, которую вы можете предоставить.

1 Ответ

0 голосов
/ 07 июня 2019

Я понял это.

df = pd.DataFrame({'years': [2014, 2015, 2016, 2017, 2018, 2019],
                           'Population_GOM': [155, 785, 452, 958, 254, 635],
                            'Population_LPA': [777, 444, 123, 734, 697, 148],
                            'Population_TNF': [1005, 85, 321, 478, 307, 448]
                           })


        df = pd.melt(df, id_vars='years')
        print df
        plt = ggplot(aes(x='years', y='value', color='variable'), df) + \
            geom_line()
        print plt

Будучи результатом (обратите внимание, что это не те же данные о населении)

enter image description here

...