Update src/diagnostic_plots.py
Browse files- src/diagnostic_plots.py +18 -7
src/diagnostic_plots.py
CHANGED
|
@@ -12,7 +12,7 @@ def plot_performance_degradation(df, metric_column, metric_name, color='blue'):
|
|
| 12 |
|
| 13 |
Args:
|
| 14 |
df (pd.DataFrame): DataFrame được tải từ 'final_5_day_results_df.csv'.
|
| 15 |
-
metric_column (str): Tên cột chính xác trong CSV (ví dụ: 'RMSE
|
| 16 |
metric_name (str): Tên hiển thị đẹp cho trục Y (ví dụ: 'RMSE (Temperature °C)').
|
| 17 |
color (str): Tên màu cho đường line.
|
| 18 |
|
|
@@ -20,9 +20,9 @@ def plot_performance_degradation(df, metric_column, metric_name, color='blue'):
|
|
| 20 |
plotly.graph_objects.Figure: Một đối tượng biểu đồ Plotly.
|
| 21 |
"""
|
| 22 |
|
| 23 |
-
# --- TÙY CHỈNH QUAN TRỌNG ---
|
| 24 |
-
#
|
| 25 |
-
DAY_AHEAD_COLUMN = '
|
| 26 |
# ---------------------------
|
| 27 |
|
| 28 |
if DAY_AHEAD_COLUMN not in df.columns:
|
|
@@ -34,11 +34,21 @@ def plot_performance_degradation(df, metric_column, metric_name, color='blue'):
|
|
| 34 |
f"Vui lòng kiểm tra file `src/diagnostic_plots.py`.")
|
| 35 |
return go.Figure()
|
| 36 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
fig = go.Figure()
|
| 38 |
|
| 39 |
fig.add_trace(go.Scatter(
|
| 40 |
-
x=
|
| 41 |
-
y=
|
| 42 |
mode='lines+markers',
|
| 43 |
name=metric_name,
|
| 44 |
line=dict(color=color, width=3),
|
|
@@ -50,7 +60,8 @@ def plot_performance_degradation(df, metric_column, metric_name, color='blue'):
|
|
| 50 |
xaxis_title="Day Ahead (Horizon)",
|
| 51 |
yaxis_title=metric_name,
|
| 52 |
title_x=0.5, # Căn giữa tiêu đề
|
| 53 |
-
template="plotly_white"
|
|
|
|
| 54 |
)
|
| 55 |
|
| 56 |
# Nếu là R2, đặt giới hạn trục y từ 0 đến 1 cho dễ nhìn
|
|
|
|
| 12 |
|
| 13 |
Args:
|
| 14 |
df (pd.DataFrame): DataFrame được tải từ 'final_5_day_results_df.csv'.
|
| 15 |
+
metric_column (str): Tên cột chính xác trong CSV (ví dụ: 'RMSE (Absolute Error)').
|
| 16 |
metric_name (str): Tên hiển thị đẹp cho trục Y (ví dụ: 'RMSE (Temperature °C)').
|
| 17 |
color (str): Tên màu cho đường line.
|
| 18 |
|
|
|
|
| 20 |
plotly.graph_objects.Figure: Một đối tượng biểu đồ Plotly.
|
| 21 |
"""
|
| 22 |
|
| 23 |
+
# --- TÙY CHỈNH QUAN TRỌNG (ĐÃ SỬA) ---
|
| 24 |
+
# Cột chứa "Day 1", "Day 2",... là 'Horizon'
|
| 25 |
+
DAY_AHEAD_COLUMN = 'Horizon'
|
| 26 |
# ---------------------------
|
| 27 |
|
| 28 |
if DAY_AHEAD_COLUMN not in df.columns:
|
|
|
|
| 34 |
f"Vui lòng kiểm tra file `src/diagnostic_plots.py`.")
|
| 35 |
return go.Figure()
|
| 36 |
|
| 37 |
+
# --- SỬA LỖI LOGIC: Chuyển "Day 1" thành số 1 ---
|
| 38 |
+
# Tạo một bản copy để tránh cảnh báo
|
| 39 |
+
plot_df = df.copy()
|
| 40 |
+
|
| 41 |
+
# Trích xuất số từ cột 'Horizon' (ví dụ: 'Day 1' -> 1)
|
| 42 |
+
# và tạo cột mới 'day_num'
|
| 43 |
+
plot_df['day_num'] = plot_df[DAY_AHEAD_COLUMN].str.extract(r'(\d+)').astype(int)
|
| 44 |
+
plot_df = plot_df.sort_values(by='day_num')
|
| 45 |
+
# ---------------------------------------------
|
| 46 |
+
|
| 47 |
fig = go.Figure()
|
| 48 |
|
| 49 |
fig.add_trace(go.Scatter(
|
| 50 |
+
x=plot_df['day_num'], # Dùng cột số 'day_num' mới cho trục X
|
| 51 |
+
y=plot_df[metric_column],
|
| 52 |
mode='lines+markers',
|
| 53 |
name=metric_name,
|
| 54 |
line=dict(color=color, width=3),
|
|
|
|
| 60 |
xaxis_title="Day Ahead (Horizon)",
|
| 61 |
yaxis_title=metric_name,
|
| 62 |
title_x=0.5, # Căn giữa tiêu đề
|
| 63 |
+
template="plotly_white",
|
| 64 |
+
xaxis = dict(tickmode = 'linear', tick0 = 1, dtick = 1) # Đảm bảo trục X là 1, 2, 3, 4, 5
|
| 65 |
)
|
| 66 |
|
| 67 |
# Nếu là R2, đặt giới hạn trục y từ 0 đến 1 cho dễ nhìn
|