любой способ получить правильную линейную / гистограмму нескольких временных рядов с Matplotlib? - PullRequest
0 голосов
/ 30 января 2020

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

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

моя текущая попытка (обновлено)

вот моя текущая попытка сделать квартальный график временного ряда:

import pandas as pd
import matplotlib.pyplot as plt
import calendar

df=pd.read_csv('export_data.csv', encoding='utf-8')
df['quarter']=pd.PeriodIndex(df.date, freq='Q')
foo = df.groupby(['partner', 'quarter'])['qty1'].sum().unstack().reset_index()
foo = foo[~(foo.isna().sum(1)/foo.shape[1]).gt(0.9)].fillna(0)
foo['qty1_sum']=foo.sum(1)
foo.nlargest(10, columns=['qty1_sum'])
df=foo.reset_index()

обновление :

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

## intend to make scatter plot by quarterly based time series
    fig, ax=plt.subplots(figsize=(10,8))
    plt.plot(df.index, df.loc[columns=='JAPAN'], marker='v', color='magenta', linewidth=2,label="JAPAN")
    plt.plot(df.index, df.loc[columns=='KOR REP'], marker='o', color='cyan', label="KOR REP")
    plt.plot(df.index, df.loc[columns=='MEXICO'], marker='s', color='green', linewidth=1, label="MEXICO")
    plt.plot(df.index,df.loc[columns=='HG KONG'],"bo-", linewidth = 1.5, label="HG KONG")
    plt.xlabel('\n Monthly time series \n', fontsize = 25, color = 'lightslategrey')
    plt.ylabel('\n Quantity \n', fontsize = 20)
    plt.legend(frameon = False, loc = 4)
    plt.grid(axis='y')
    ax.set_xticklabels([calendar.month_abbr[i] for i in range(1,13)])
    plt.tick_params( left = False, labelsize= 13)
    plt.show()

Мой скрипт выше для создания данных графика сейчас все в порядке Но получить правильный желаемый сюжет не работает. Есть мысли?

минимальные данные

Вот минимальные данные по публикации c gist , которые я использовал для получения ожидаемого столбчатого графика с накоплением. Вот как выглядят данные:

enter image description here

объективный столбчатый график с разбивкой по объективам

Вот этот линейный график вдохновлено отчетом о торговых данных:

enter image description here

, поскольку этот желаемый график, конечно, не генерируется из сценария python, поэтому я попробовал несколько возможных способов сделать очень похожий сюжет, но я не получил правильный. Есть ли какой-нибудь удобный способ получить этот график, используя минимальные данные , которыми я поделился в гисте? Какие-нибудь мысли? спасибо!

...