Plotly'de Açılır Menü Nasıl Oluşturulur

Feb 22 2023
Farklı kategorileri tek bir çizimde görselleştirin
Görselleştirmek istediğiniz, farklı sütunlarda düzenlenmiş çok sayıda bilgi içeren bir veri kümeniz olduğunu düşünelim. Ek olarak, içeriğin kendisi aynı çizim tipiyle gösterilebilir, örn.
Unsplash'ta Jason Leung'un fotoğrafı

Görselleştirmek istediğiniz, farklı sütunlarda düzenlenmiş çok sayıda bilgi içeren bir veri kümeniz olduğunu düşünelim. Ek olarak, içeriğin kendisi aynı grafik tipiyle gösterilebilir, örneğin çubuk veya çizgi çizimi, ancak bunu bir kerede görüntülemek mantıklı değildir. Açıkçası, birkaç alt grafik oluşturabilir ve bunları birbirinin altında görselleştirebilirsiniz. Ancak görüntülenecek çok fazla kategoriniz varsa bu kontrolden çıkabilir. Neyse ki, Plotly'de bir açılır menü oluşturarak bunun için basit bir çözüm var. Öyleyse nasıl yapılacağına bir göz atalım.

Veri kazıma

İlk olarak, verileri almamız gerekiyor. Bu örnekte, bireysel oyuncular için NBA istatistiklerini www.basketball-reference.com adresinden derleyeceğiz . İşleri basitleştirmek için maç başına sayı, ribaund ve asist açısından yalnızca ilk on oyuncuya odaklanacağız:

# Scraping individual stats from www.basketball-reference.com
df = pd.read_html('https://www.basketball-reference.com/leagues/NBA_2023_per_game.html')[0]

# Filtering out irrelevant entries 
df = df[df['Player'] != 'Player']

# Converting columns into numeric type if possible
for col in df.columns:
    try:
        df[col] = pd.to_numeric(df[col])
    except:
        pass

# Filtering and sorting for categories of interest
df_pts = df[['Player', 'PTS']].sort_values('PTS', ascending=False)[:10]
df_trb = df[['Player', 'TRB']].sort_values('TRB', ascending=False)[:10]
df_ast = df[['Player', 'AST']].sort_values('AST', ascending=False)[:10]

      
                
Image: df_pts, df_trb, df_ast

Bir sonraki adımda, üç çubuk grafiği içeren bir şekil nesnesi oluşturacağız. Her çubuk grafiği, önceki adımda üç veri çerçevesini oluşturarak ayırt ettiğimiz farklı bir kategoriyi (sayılar, ribaundlar, asistler) temsil eder. Lütfen görünür parametrenin yalnızca ilk çubuk grafiği için True olarak ve diğerleri için false olarak ayarlanmasının önemli olduğunu unutmayın :

# Initializing figure object
fig = go.Figure()

# Adding points bar plot
fig.add_trace(
    go.Bar(
        y=list(df_pts['Player']),
        x=list(df_pts['PTS']),
        name='Points',
        orientation='h'
    )
)

# Adding rebounds bar plot
fig.add_trace(
    go.Bar(
        y=list(df_trb['Player']),
        x=list(df_trb['TRB']),
        name='Rebounds',
        visible=False,
        orientation='h'
    )
)

# Adding assists bar plot
fig.add_trace(
    go.Bar(
        y=list(df_ast['Player']),
        x=list(df_ast['AST']),
        name='Assists',
        visible=False,
        orientation='h'
    )
)

# Minor layout adjustments
fig.update_layout(title='<b>Top 10 Leaders</b>', 
                  title_x=0.5,
                  margin=dict(t=50),
                  yaxis=dict(autorange="reversed", ticksuffix="  ")
                 )

fig.show()

      
                
Image: points bar plot

Şimdi update_layout methodu ile şekil nesnesine açılır menüyü ekleyelim . updatemenus parametresi içinde, butonlar parametresi için bir sözlük listesi geçirmemiz gerekiyor . Her sözlük aşağıdakileri belirtir:

  • etiket: düğmede görünen ad → örneğin Puanlar
  • yöntem: bir tıklamayla yapılacak işlem → güncelleme
  • args: yalnızca önceki adımda add_trace yöntemiyle eklenen ilk çubuk grafiği göstermek için ilgili etikete → [Doğru, Yanlış, Yanlış] tıklandıktan sonra görünür grafikleri tanımlayan bir sözlük içeren liste
  • fig.update_layout(
        updatemenus=[
            dict(
                xanchor='left',
                x=-0.15,
                yanchor='top',
                y=1.1,
                active=0,
                buttons=list([
                    dict(label="Points",
                         method="update",
                         args=[{"visible": [True, False, False]}]
                        ),
                    dict(label="Rebounds",
                         method="update",
                         args=[{"visible": [False, True, False]}]
                        ),
                    dict(label="Assists",
                         method="update",
                         args=[{"visible": [False, False, True]}]
                        )
                ]),
            )
        ])
    
    fig.show()
    
           
                    
    Image: bar plot with dropdown menu

Bu yazıda, bir veri çerçevesinin farklı sütunlarında bulunan birden çok kategoriyi görselleştirmek için Plotly'de açılır menü oluşturmayı anlattım. Bu, özellikle görüntülenecek çok sayıda kategoriniz varsa ancak her biri için ayrı bir grafik oluşturmak istemiyorsanız kullanışlıdır. Umarım bu sizin için yararlı olmuştur ve okuduğunuz için teşekkürler!

İlgili Makaleler

Bu makaleyi beğendiyseniz, aşağıdakiler de ilginizi çekebilir:

Seviye Atlama Kodlama

Topluluğumuzun bir parçası olduğunuz için teşekkürler! Gitmeden önce:

  • Hikaye için alkışlayın ve yazarı takip edin
  • Seviye Atlama Kodlama yayınında daha fazla içerik görüntüleyin
  • Ücretsiz kodlama mülakat kursu ⇒ Kursu Görüntüle
  • Bizi takip edin: Twitter | LinkedIn | Bülten