File size: 3,648 Bytes
6cc86ad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
"""Third party imports."""
import streamlit as st
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go

# Read data from CSV
def read_data(filename):
    """Read data from csv."""
    df = pd.read_csv(filename)
    df['Date'] = pd.to_datetime(df['Date'])  # Convert 'Date' column to datetime
    return df

def generate_line_chart(data, metrics1="", metrics2="", metrics3=""):
    """Generate Line charts."""
    chart_data = data.copy()
    chart_data['Date'] = pd.to_datetime(chart_data['Date'])
    chart_data['Date'] = chart_data['Date'].dt.strftime('%m-%d')

    # Plot the line charts
    if metrics1 in chart_data.columns:
        st.line_chart(data=chart_data,x='Date',y=metrics1)

    if metrics2 in chart_data.columns:
        st.line_chart(data=chart_data,x='Date',y=metrics2)

    if metrics3 in chart_data.columns:
        st.line_chart(data=chart_data,x='Date',y=metrics3)


def generate_pie_chart(data,widget_id,chart_title):
    """Generate Pie Chart."""
    options = ['View Count', 'Like Count', 'Comment Count']
    selected_options = st.multiselect(widget_id, options, default=options)

    fig = go.Figure()

    for option in selected_options:
        fig.add_trace(go.Pie(labels=data['Game'], values=data[option], name=option, textinfo='label+percent', textposition='inside'))

    fig.update_layout(title=chart_title)

    st.plotly_chart(fig)

def generate_bar_chart(data,widget_id):
    """Generate Bar Chart."""
    options = ['View Count', 'Like Count', 'Comment Count']
    selected_options = st.multiselect(widget_id, options, default=options)

    counts = data.groupby('Game')[selected_options].sum().reset_index()
    counts['Total'] = counts[selected_options].sum(axis=1)  # Calculate the sum of selected options as the 'Total' column
    counts_sorted = counts.sort_values(by='Total', ascending=True)  # Sort by the 'Total' column

    labels = counts_sorted['Game']
    values = counts_sorted[selected_options]

    fig = go.Figure()
    for option in selected_options:
        fig.add_trace(go.Bar(y=labels, x=values[option], orientation='h', name=option))

    fig.update_layout(title='Count of View Count, Like Count, Comment Count',
                      xaxis_title='Count',
                      yaxis_title='Game',
                      barmode='stack')

    st.plotly_chart(fig, use_container_width=True)

# Main function
def main():
    """Initialize the program."""
    st.title("Youtube Share of Voice")

    # Read CSV file
    filename = 'csvs/SOV - SoV_YT.csv'
    data = read_data(filename)

    # Generate line chart
    st.subheader("Axie Infinity Trend")
    generate_line_chart(data,'View Count', 'Like Count', 'Comment Count')


    # Generate pie chart
    pie_df = pd.read_csv('csvs/SOV - YT_axie_vs_field.csv')

    generate_pie_chart(pie_df,'Select AVF Metrics','Axie Infinity VS Field')
    generate_bar_chart(pie_df,' ')

    # Generate pie chart
    # pie_df2 = pd.read_csv('csvs/SOV - YT_axie_vs_field - Copy.csv')

    # generate_pie_chart(pie_df2,'Select Metrics','Axie Infinity VS Field(With 3 Big Creators)')
    # generate_bar_chart(pie_df2,'     ')

    # Generate pie chart for Ronin Games
    rgpie_df = pd.read_csv('csvs/SOV - YT_ronin_games.csv')

    generate_pie_chart(rgpie_df,'Select Ronin Games Metrics','Ronin Games VS Each Other')
    generate_bar_chart(rgpie_df,'  ')

    # Generate pie chart for Ronin Games vs Field
    rvfpie_df = pd.read_csv('csvs/SOV - YT_RVF.csv')


    generate_pie_chart(rvfpie_df,'Select RVF Metrics','Ronin Games VS Field')
    generate_bar_chart(rvfpie_df,'   ')

    

if __name__ == '__main__':
    main()