Sathwikchowdary commited on
Commit
0393698
Β·
verified Β·
1 Parent(s): 659dfad

Update pages/2player_comparison.py

Browse files
Files changed (1) hide show
  1. pages/2player_comparison.py +42 -28
pages/2player_comparison.py CHANGED
@@ -21,51 +21,65 @@ def load_data():
21
 
22
  # Main App
23
  def main():
 
24
  st.title("Cricket Player Comparison Tool 🏏")
25
- st.write("Upload two player images and compare their performance visually.")
26
 
27
  df = load_data()
28
  model, encoder = load_model_and_encoder()
29
 
30
- # Upload Images
 
31
  col1, col2 = st.columns(2)
32
  with col1:
33
  img1 = st.file_uploader("Upload Image for Player 1", type=['png', 'jpg', 'jpeg'], key='img1')
34
  with col2:
35
  img2 = st.file_uploader("Upload Image for Player 2", type=['png', 'jpg', 'jpeg'], key='img2')
36
 
37
- if img1 and img2:
38
- # Placeholder: Extract player name from uploaded file name
39
- player1_name = img1.name.split('.')[0]
40
- player2_name = img2.name.split('.')[0]
 
 
 
41
 
42
- if player1_name in df['Player'].values and player2_name in df['Player'].values:
43
- player1_data = df[df['Player'] == player1_name].squeeze()
44
- player2_data = df[df['Player'] == player2_name].squeeze()
45
 
46
- st.success(f"Comparing **{player1_name}** vs **{player2_name}**")
47
 
48
- # Combine both players into one DataFrame for visualization
49
- comparison_df = pd.DataFrame([player1_data, player2_data])
50
- comparison_df.set_index('Player', inplace=True)
51
 
52
- # Display Side-by-Side Metrics
53
- st.subheader("πŸ” Key Metrics")
54
- st.dataframe(comparison_df.T)
 
 
 
 
 
55
 
56
- # Radar chart / Barplot for comparison
57
- st.subheader("πŸ“Š Visual Comparison")
58
- num_cols = comparison_df.select_dtypes(include='number').columns.tolist()
59
 
60
- # Plot
61
- plt.figure(figsize=(10, 5))
62
- comparison_df[num_cols].T.plot(kind='bar', figsize=(10, 6))
63
- plt.title(f"Stat Comparison: {player1_name} vs {player2_name}")
64
- plt.ylabel("Metric Value")
65
- plt.xticks(rotation=45)
66
- st.pyplot(plt.gcf())
67
- else:
68
- st.error("Player names extracted from images do not match any in the dataset. Ensure filenames match player names in the CSV.")
 
 
 
 
69
 
70
  if __name__ == "__main__":
71
  main()
 
21
 
22
  # Main App
23
  def main():
24
+ st.set_page_config(layout="centered")
25
  st.title("Cricket Player Comparison Tool 🏏")
26
+ st.write("Upload images and manually select the players you want to compare.")
27
 
28
  df = load_data()
29
  model, encoder = load_model_and_encoder()
30
 
31
+ # Upload player images
32
+ st.subheader("Step 1: Upload Player Images")
33
  col1, col2 = st.columns(2)
34
  with col1:
35
  img1 = st.file_uploader("Upload Image for Player 1", type=['png', 'jpg', 'jpeg'], key='img1')
36
  with col2:
37
  img2 = st.file_uploader("Upload Image for Player 2", type=['png', 'jpg', 'jpeg'], key='img2')
38
 
39
+ st.subheader("Step 2: Select Players from the Dropdown")
40
+ player_names = df['Player'].unique().tolist()
41
+ col3, col4 = st.columns(2)
42
+ with col3:
43
+ player1_name = st.selectbox("Select Player 1", player_names, key='player1')
44
+ with col4:
45
+ player2_name = st.selectbox("Select Player 2", player_names, key='player2')
46
 
47
+ if player1_name and player2_name and player1_name != player2_name:
48
+ player1_data = df[df['Player'] == player1_name].squeeze()
49
+ player2_data = df[df['Player'] == player2_name].squeeze()
50
 
51
+ st.success(f"Comparing **{player1_name}** vs **{player2_name}**")
52
 
53
+ # Combine data for comparison
54
+ comparison_df = pd.DataFrame([player1_data, player2_data])
55
+ comparison_df.set_index('Player', inplace=True)
56
 
57
+ # Show images if uploaded
58
+ col5, col6 = st.columns(2)
59
+ with col5:
60
+ if img1:
61
+ st.image(img1, caption=player1_name, use_column_width=True)
62
+ with col6:
63
+ if img2:
64
+ st.image(img2, caption=player2_name, use_column_width=True)
65
 
66
+ # Show key metrics
67
+ st.subheader("πŸ“‹ Key Metrics")
68
+ st.dataframe(comparison_df.T)
69
 
70
+ # Plot visual comparison
71
+ st.subheader("πŸ“Š Stat Comparison Graph")
72
+ num_cols = comparison_df.select_dtypes(include='number').columns.tolist()
73
+
74
+ plt.figure(figsize=(10, 6))
75
+ comparison_df[num_cols].T.plot(kind='bar')
76
+ plt.title(f"{player1_name} vs {player2_name} - Performance Comparison")
77
+ plt.ylabel("Value")
78
+ plt.xticks(rotation=45)
79
+ plt.tight_layout()
80
+ st.pyplot(plt.gcf())
81
+ elif player1_name == player2_name:
82
+ st.warning("Please select two different players.")
83
 
84
  if __name__ == "__main__":
85
  main()