import pandas as pd
import plotly.express as px
import plotly.graph_objects as go

# Dosya yolları (Bilgisayarındaki yerel yolları kullanabilirsin)
CLEAN_DATA_PATH = 'data/processed/movies_clean.csv'
SCORES_DATA_PATH = 'data/processed/movie_scores.csv'

def visualize_movie_data():
    # Verileri yükle
    df_clean = pd.read_csv(CLEAN_DATA_PATH)
    df_scores = pd.read_csv(SCORES_DATA_PATH)

    # 1. Görsel: Film Bazlı Karşılaştırmalı Puanlar (Bar Chart)
    # Hangi platform hangi filme ne kadar cömert davranmış?
    fig1 = px.bar(df_clean, 
                 x='Title', 
                 y=['IMDB_norm', 'RottenTomatoes_norm', 'Metacritic_norm'],
                 title='Platformlara Göre Normalize Edilmiş Film Puanları',
                 barmode='group',
                 labels={'value': 'Puan (0-100)', 'variable': 'Platform'})
    fig1.show()

    # 2. Görsel: Nihai Movie Score (MS) Dağılımı
    # Senin hesapladığın o tek rakamın filmler arasındaki farkı
    fig2 = px.scatter(df_scores, 
                     x='Title', 
                     y='MovieScore', 
                     size='MovieScore', 
                     color='MovieScore',
                     title='Nihai Movie Score (MS) Değerleri',
                     text='MovieScore')
    fig2.update_traces(textposition='top center')
    fig2.show()

    # 3. Görsel: Platformlar Arası İlişki (Radar Chart)
    # Bir filmin tüm platformlardaki "karakterini" görmek için
    categories = ['IMDB_norm', 'RottenTomatoes_norm', 'Metacritic_norm']
    
    fig3 = go.Figure()
    for index, row in df_clean.iterrows():
        fig3.add_trace(go.Scatterpolar(
            r=[row['IMDB_norm'], row['RottenTomatoes_norm'], row['Metacritic_norm']],
            theta=categories,
            fill='toself',
            name=row['Title']
        ))
    
    fig3.update_layout(
      polar=dict(radialaxis=dict(visible=True, range=[0, 100])),
      showlegend=True,
      title='Film Bazlı Platform Karşılaştırma (Radar)'
    )
    fig3.show()

if __name__ == "__main__":
    visualize_movie_data()