Update app.py
Browse files
app.py
CHANGED
@@ -429,32 +429,32 @@ def compute_student_metrics(df):
|
|
429 |
# # Display the plot
|
430 |
# st.pyplot(fig)
|
431 |
|
432 |
-
|
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 and offset for overlapping effect
|
437 |
bar_width = 0.4
|
438 |
index = range(len(student_metrics_df))
|
439 |
-
|
440 |
# Plot Attendance and Engagement bars side by side with transparency
|
441 |
attendance_bars = ax.bar([i - bar_width/2 for i in index], student_metrics_df['Attendance (%)'],
|
442 |
width=bar_width, label='Attendance (%)', color='#005288', alpha=0.7)
|
443 |
engagement_bars = ax.bar([i + bar_width/2 for i in index], student_metrics_df['Engagement (%)'],
|
444 |
width=bar_width, label='Engagement (%)', color='#3AB0FF', alpha=0.7)
|
445 |
-
|
446 |
# Add labels to each bar with customized font size and color
|
447 |
font_size = 8 # Reduced font size for better fit
|
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}%',
|
456 |
ha='center', va='bottom', color='black', fontsize=font_size)
|
457 |
-
|
458 |
# Set labels, title, and legend
|
459 |
ax.set_xlabel('Student')
|
460 |
ax.set_ylabel('Percentage (%)')
|
@@ -462,13 +462,13 @@ def compute_student_metrics(df):
|
|
462 |
ax.legend()
|
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 |
-
|
469 |
# Display the plot
|
470 |
st.pyplot(fig)
|
471 |
-
|
472 |
return fig
|
473 |
return fig
|
474 |
|
|
|
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 and offset for overlapping effect
|
437 |
bar_width = 0.4
|
438 |
index = range(len(student_metrics_df))
|
439 |
+
|
440 |
# Plot Attendance and Engagement bars side by side with transparency
|
441 |
attendance_bars = ax.bar([i - bar_width/2 for i in index], student_metrics_df['Attendance (%)'],
|
442 |
width=bar_width, label='Attendance (%)', color='#005288', alpha=0.7)
|
443 |
engagement_bars = ax.bar([i + bar_width/2 for i in index], student_metrics_df['Engagement (%)'],
|
444 |
width=bar_width, label='Engagement (%)', color='#3AB0FF', alpha=0.7)
|
445 |
+
|
446 |
# Add labels to each bar with customized font size and color
|
447 |
font_size = 8 # Reduced font size for better fit
|
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}%',
|
456 |
ha='center', va='bottom', color='black', fontsize=font_size)
|
457 |
+
|
458 |
# Set labels, title, and legend
|
459 |
ax.set_xlabel('Student')
|
460 |
ax.set_ylabel('Percentage (%)')
|
|
|
462 |
ax.legend()
|
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 |
+
|
469 |
# Display the plot
|
470 |
st.pyplot(fig)
|
471 |
+
|
472 |
return fig
|
473 |
return fig
|
474 |
|