如何修正LaTeX绘制平滑ROC曲线时线条超出坐标轴的问题
问题根源
溢出问题由两个原因共同导致:
- PGFPlots默认的
smooth参数使用无约束三次样条插值,在仅提供3个坐标点的场景下,拟合曲线会超出原始点的取值范围,不符合ROC曲线单调递增的特性 - 原有坐标轴配置设置了
xmin=-0.05、ymax=1.1,留出了本不需要的冗余显示空间,进一步放大了插值溢出的视觉问题
修正方案
按以下规则修改代码即可得到符合要求的平滑ROC曲线:
- 调整坐标轴范围:将
xmin设为0、ymax设为1,移除不必要的冗余显示区间 - 替换平滑插值方式:给
\addplot的平滑参数增加monotonic配置,使用单调样条插值,完全贴合ROC曲线单调递增的特性,从根源避免插值超出0-1的取值范围 - 可选优化:如果需要调整平滑程度,可额外增加
tension=<数值>参数,取值范围0-1,数值越小曲线越接近原始折线 - 小修正:原有代码中百分比写法
\%99.49顺序错误,应为99.49\%
修正后完整代码
\begin{tikzpicture} \begin{axis}[ font=\sf, xlabel={False Positive Rate}, ylabel={True Positive Rate}, xmin=0, xmax=1, ymin=0, ymax=1, xtick={0,.2,.4,.6,.8,1}, ytick={0,.2,.4,.6,.8,1}, legend pos=south east, no markers, every axis plot/.append style={ultra thick} ] \addlegendimage{empty legend} \addlegendentry{\hspace{-.6cm}\textbf{AUC}} \addplot[smooth, monotonic, red] coordinates {(0,0)(0.00635842,0.99631106)(1,1)}; \addlegendentry{L = 99.49\%} \end{axis} \end{tikzpicture}
内容的提问来源于stack exchange,提问作者Hashim
相关产品推荐
相关产品推荐

