如何自定义scikitplot.metrics绘图的线宽与轴刻度颜色?
解决scikit-plot KS统计量图样式自定义问题
scikit-plot的plot_ks_statistic函数会返回matplotlib的Axes对象,直接用plt全局设置样式不生效的原因是:函数内部已经创建并初始化了轴实例,后续全局设置无法覆盖已有属性。直接操作返回的轴对象就能实现你要的自定义效果:
步骤1:获取绘图的轴对象
调用绘图函数时接收返回值:
import matplotlib.pyplot as plt import scikitplot as skplt # 替换成你的真实数据y_true和y_probas ax = skplt.metrics.plot_ks_statistic(y_true, y_probas)
步骤2:设置线条宽度为1.5pt
遍历轴上的所有线条,修改线宽:
for line in ax.lines: line.set_linewidth(1.5)
步骤3:将轴刻度设为黑色
使用tick_params方法直接设置刻度颜色,若需要边框(轴脊)也为黑色,可一并设置:
# 同时设置x、y轴刻度颜色为黑色 ax.tick_params(axis='both', colors='black') # 可选:将四个边框也设为黑色 for spine in ax.spines.values(): spine.set_color('black')
完整可运行示例
import matplotlib.pyplot as plt import scikitplot as skplt from sklearn.datasets import make_classification from sklearn.ensemble import RandomForestClassifier # 生成示例分类数据 X, y = make_classification(n_samples=1000, n_classes=2, random_state=42) # 训练模型获取预测概率 model = RandomForestClassifier(random_state=42) model.fit(X[:800], y[:800]) y_probas = model.predict_proba(X[800:]) # 绘制KS图并获取轴对象 ax = skplt.metrics.plot_ks_statistic(y[800:], y_probas) # 自定义样式 for line in ax.lines: line.set_linewidth(1.5) ax.tick_params(axis='both', colors='black') for spine in ax.spines.values(): spine.set_color('black') plt.show()
内容的提问来源于stack exchange,提问作者Cesar Pereira
相关产品推荐
相关产品推荐

