Update app.py
Browse files
app.py
CHANGED
|
@@ -429,27 +429,29 @@ def compute_student_metrics(df):
|
|
| 429 |
# # Display the plot
|
| 430 |
# st.pyplot(fig)
|
| 431 |
|
|
|
|
|
|
|
| 432 |
def plot_student_metrics(student_metrics_df):
|
| 433 |
# Create the figure and axis
|
| 434 |
fig, ax = plt.subplots(figsize=(10, 6)) # Increased figure size for better readability
|
| 435 |
-
|
| 436 |
-
# Width for the bars
|
| 437 |
-
bar_width = 0.
|
| 438 |
index = range(len(student_metrics_df))
|
| 439 |
|
| 440 |
-
# Plot Attendance and Engagement bars
|
| 441 |
-
attendance_bars = ax.bar(
|
| 442 |
width=bar_width, label='Attendance (%)', color='#005288', alpha=0.7)
|
| 443 |
-
engagement_bars = ax.bar(
|
| 444 |
-
width=bar_width, label='Engagement (%)', color='#3AB0FF', alpha=0.7)
|
| 445 |
|
| 446 |
-
# Add labels to each bar
|
| 447 |
-
font_size =
|
| 448 |
for bar in attendance_bars:
|
| 449 |
height = bar.get_height()
|
| 450 |
ax.text(bar.get_x() + bar.get_width() / 2, height, f'{height:.1f}%',
|
| 451 |
ha='center', va='bottom', color='white', fontsize=font_size)
|
| 452 |
-
|
| 453 |
for bar in engagement_bars:
|
| 454 |
height = bar.get_height()
|
| 455 |
ax.text(bar.get_x() + bar.get_width() / 2, height, f'{height:.1f}%',
|
|
@@ -463,6 +465,9 @@ def plot_student_metrics(student_metrics_df):
|
|
| 463 |
ax.set_xticks(index)
|
| 464 |
ax.set_xticklabels(student_metrics_df['Student'], rotation=45, ha='right') # Improved xticklabel alignment
|
| 465 |
|
|
|
|
|
|
|
|
|
|
| 466 |
# Tight layout to ensure all elements fit within the figure
|
| 467 |
fig.tight_layout()
|
| 468 |
|
|
@@ -470,7 +475,6 @@ def plot_student_metrics(student_metrics_df):
|
|
| 470 |
st.pyplot(fig)
|
| 471 |
|
| 472 |
return fig
|
| 473 |
-
return fig
|
| 474 |
|
| 475 |
# def plot_student_metrics(student_metrics_df):
|
| 476 |
# # Create the figure and axis
|
|
|
|
| 429 |
# # Display the plot
|
| 430 |
# st.pyplot(fig)
|
| 431 |
|
| 432 |
+
import matplotlib.pyplot as plt
|
| 433 |
+
|
| 434 |
def plot_student_metrics(student_metrics_df):
|
| 435 |
# Create the figure and axis
|
| 436 |
fig, ax = plt.subplots(figsize=(10, 6)) # Increased figure size for better readability
|
| 437 |
+
|
| 438 |
+
# Width for the bars
|
| 439 |
+
bar_width = 0.35
|
| 440 |
index = range(len(student_metrics_df))
|
| 441 |
|
| 442 |
+
# Plot Attendance and Engagement bars with transparency
|
| 443 |
+
attendance_bars = ax.bar(index, student_metrics_df['Attendance (%)'],
|
| 444 |
width=bar_width, label='Attendance (%)', color='#005288', alpha=0.7)
|
| 445 |
+
engagement_bars = ax.bar(index, student_metrics_df['Engagement (%)'],
|
| 446 |
+
width=bar_width * 0.7, label='Engagement (%)', color='#3AB0FF', alpha=0.7) # Skinnier engagement bars
|
| 447 |
|
| 448 |
+
# Add labels to each bar
|
| 449 |
+
font_size = 10 # Font size for the labels
|
| 450 |
for bar in attendance_bars:
|
| 451 |
height = bar.get_height()
|
| 452 |
ax.text(bar.get_x() + bar.get_width() / 2, height, f'{height:.1f}%',
|
| 453 |
ha='center', va='bottom', color='white', fontsize=font_size)
|
| 454 |
+
|
| 455 |
for bar in engagement_bars:
|
| 456 |
height = bar.get_height()
|
| 457 |
ax.text(bar.get_x() + bar.get_width() / 2, height, f'{height:.1f}%',
|
|
|
|
| 465 |
ax.set_xticks(index)
|
| 466 |
ax.set_xticklabels(student_metrics_df['Student'], rotation=45, ha='right') # Improved xticklabel alignment
|
| 467 |
|
| 468 |
+
# Set y-axis limits from 0 to 100%
|
| 469 |
+
ax.set_ylim(0, 100)
|
| 470 |
+
|
| 471 |
# Tight layout to ensure all elements fit within the figure
|
| 472 |
fig.tight_layout()
|
| 473 |
|
|
|
|
| 475 |
st.pyplot(fig)
|
| 476 |
|
| 477 |
return fig
|
|
|
|
| 478 |
|
| 479 |
# def plot_student_metrics(student_metrics_df):
|
| 480 |
# # Create the figure and axis
|