matplotlib mpl ax.fill_between plt.fill_between двух линий тренда TimeSeries _ ошибка 'isinfinite' - PullRequest
0 голосов
/ 17 июня 2020

Я хотел бы заполнить поле между df ['Confirmed'] и df ['Alive'], а затем между df ['Recovered'] и осью x

Это цель: Image_showing_the_desired_change

Прокомментированный код - моя неработающая попытка:

Прокрутите вниз, чтобы увидеть код.

============= ==================

Некоторый текст, который необходимо преодолеть: «Похоже, ваше сообщение в основном представляет собой код; пожалуйста, добавьте некоторые подробности». Потому что ... ну, это так!

Некоторый текст, который нужно преодолеть: «Похоже, ваше сообщение - это в основном код; пожалуйста, добавьте еще несколько деталей». Потому что ... ну, это так!

Некоторый текст, который нужно преодолеть: «Похоже, что ваше сообщение - это в основном код; пожалуйста, добавьте некоторые детали». Потому что ... ну, это так!

Некоторый текст, который нужно преодолеть: «Похоже, ваше сообщение - это в основном код; пожалуйста, добавьте еще несколько деталей». Потому что ... ну, это так!

Некоторый текст, который нужно преодолеть: «Похоже, ваше сообщение - это в основном код; пожалуйста, добавьте еще несколько деталей». Потому что ... ну, это так!

Некоторый текст, который нужно преодолеть: «Похоже, ваше сообщение - это в основном код; пожалуйста, добавьте некоторые детали». Потому что ... ну это так!

import matplotlib.pyplot as plt
import pandas            as pd

pd.set_option(  'display.max_rows',  None  )

CONFIRMED = 'https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv'
DEATHS    = 'https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_deaths_global.csv'
RECOVERED = 'https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_recovered_global.csv'

confirmed = pd.read_csv(  CONFIRMED  )
deaths    = pd.read_csv(   DEATHS    )
recovered = pd.read_csv(  RECOVERED  )


def covid19(  name: str  )   ->   pd.DataFrame:
    # Select matching country
    c  =  confirmed[ 'Country/Region' ] == name
    d  =  deaths   [ 'Country/Region' ] == name
    r  =  recovered[ 'Country/Region' ] == name

    # Merge data and discard not needed columns
    df = pd.concat(   [ confirmed.loc[c].transpose()[4:],
                        deaths   .loc[d].transpose()[4:],
                        recovered.loc[r].transpose()[4:]  ]
                    , axis = 1
                    , keys = [  'Confirmed',  'Deaths',  'Recovered'  ]   )

    # Set columns and index
    df.columns = df.columns.droplevel(1)
    df.index   = pd.to_datetime(df.index)
    df.sort_index(  ascending=True,  inplace=True  )

    print( df.tail(2) )
    df['Alive']  =  df['Confirmed'] - df['Deaths']
    print( df.tail(3) )

    # Create figure and axis objects
    fig,  ax  =  plt.subplots(   nrows = 4,
                                 ncols = 1,
                                 sharex = True,
                                 sharey = False,
                                 gridspec_kw  =  {  'height_ratios':  [2, 1, 1, 4]  },
                                 figsize  =  ( 12, 6 )                                  )
    # ———————————————————
    # Confirmed  -  Deaths  -  Survived   =   ( Sick ≈ Fighting ≈ Praying ≈ Waiting )
    ax[3].plot(   df['Confirmed'],   lw=0.5,   color='darkred'       )
    ax[3].plot(   df[  'Alive'  ],   lw=0.5,   color='darkred'       )
    ax[3].plot(   df['Recovered'],   lw=0.5,   color='darkgreen'     )
    ax[3].set_ylim(  ymin=0,  ymax=None  )
    ax[3].set_ylabel('Syrvived | Waiting | Death')
    ax[3].grid(  True,  which='major'  )
    # ax[3].axhline(y=0.0, color='k', linestyle='-')
    # ax[3].legend()


    print(  df.shape     )
    print(  df.max()     )
    print(  df.max()[0]  )
    x = ax[3].axvline(   x=df.index[-1],  ymin=0.0,   ymax=df.max()[0],   color='k',   lw=0.1   )

    # ax[3].fill_between(  x,
    #                      df['Confirmed'],
    #                      df[  'Alive'  ],  color='red'  ,  alpha='0.5'  )
    # ax[3].fill_between(  x,
    #                      df['Recovered'],
    #                      df[  'zero'   ],  color='green',  alpha='0.5'  )

    # Set general layout for whole figure
    plt.setp(   ax[3].get_xticklabels(),   rotation=45,   horizontalalignment='right'   )
    fig.tight_layout()
    plt.show()
    # print( df )


covid19('Korea, South')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...