Я работаю над данными об импорте / экспорте и одним из показателей торговли, квартальной линейной линейкой ряда / гистограммы, которую я изо всех сил пытаюсь получить с помощью 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 , которые я использовал для получения ожидаемого столбчатого графика с накоплением. Вот как выглядят данные:
объективный столбчатый график с разбивкой по объективам
Вот этот линейный график вдохновлено отчетом о торговых данных:
, поскольку этот желаемый график, конечно, не генерируется из сценария python, поэтому я попробовал несколько возможных способов сделать очень похожий сюжет, но я не получил правильный. Есть ли какой-нибудь удобный способ получить этот график, используя минимальные данные , которыми я поделился в гисте? Какие-нибудь мысли? спасибо!