You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用for循环在同一张图绘制多条不同颜色的ROC曲线?

解决ROC曲线颜色重复问题

你的问题根源在于代码里固定了'b'(蓝色)作为所有曲线的颜色,所以每条ROC曲线都显示相同颜色,而且图例仅标注AUC值,无法区分对应模型。下面提供两种实用的解决方法:

方法一:自定义颜色列表(精确控制配色)

先创建一个与模型数量匹配的颜色列表,通过zip将模型和颜色一一绑定,同时把模型名称加入图例标签,方便识别:

models = {
"KNN": KNeighborsClassifier(n_neighbors = 10),
"Logistic Regression": LogisticRegression(),
"Decision Tree": DecisionTreeClassifier(),
"SVM": SVC(probability=True)}

# 自定义颜色列表,数量与模型数一致,可按需调整配色
colors = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728']

for (name, model), color in zip(models.items(), colors):
    model.fit(X_train_scaled, y_train)
    y_scores = model.predict_proba(X_test_scaled)
    fpr, tpr, threshold = roc_curve(y_test, y_scores[:, 1])
    roc_auc = auc(fpr, tpr)
    # 使用对应颜色,并在标签中加入模型名称
    plt.plot(fpr, tpr, color=color, label=f'{name} (AUC = {roc_auc:.2f})')

plt.title('Receiver Operating Characteristic')
plt.legend(loc='lower right')
plt.plot([0, 1], [0, 1], 'r--')
plt.xlim([0, 1])
plt.ylim([0, 1])
plt.ylabel('True Positive Rate')
plt.xlabel('False Positive Rate')
plt.show()

方法二:利用Matplotlib自动颜色循环(简洁优雅)

Matplotlib默认自带颜色循环机制,只需移除代码中固定的'b'参数,它就会自动为每条曲线分配不同颜色,无需手动管理颜色列表:

models = {
"KNN": KNeighborsClassifier(n_neighbors = 10),
"Logistic Regression": LogisticRegression(),
"Decision Tree": DecisionTreeClassifier(),
"SVM": SVC(probability=True)}

for name, model in models.items():
    model.fit(X_train_scaled, y_train)
    y_scores = model.predict_proba(X_test_scaled)
    fpr, tpr, threshold = roc_curve(y_test, y_scores[:, 1])
    roc_auc = auc(fpr, tpr)
    # 去掉固定颜色,让Matplotlib自动分配配色
    plt.plot(fpr, tpr, label=f'{name} (AUC = {roc_auc:.2f})')

plt.title('Receiver Operating Characteristic')
plt.legend(loc='lower right')
plt.plot([0, 1], [0, 1], 'r--')
plt.xlim([0, 1])
plt.ylim([0, 1])
plt.ylabel('True Positive Rate')
plt.xlabel('False Positive Rate')
plt.show()

额外优化建议

  • 图例标签加入模型名称后,可直接对应每条曲线的模型,避免混淆;
  • 若后续扩展模型数量,方法二中的自动颜色循环会自动适配,无需修改颜色列表;
  • 若想全局自定义颜色循环,可使用plt.gca().set_prop_cycle(color=your_color_list)来设置。

内容的提问来源于stack exchange,提问作者Tim Starr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 22:31:11