如何在matplotlib常规折线图上标记K=20到25区间内的最小值点
实现方法
你可以按以下步骤修改代码,完成指定区间最小值的标记:
- 先截取K值20~25对应的数据段,计算该段的最小值和对应的K值
- 用
plt.scatter接口绘制红色空心圆圈标注目标点
完整可运行代码:
import matplotlib.pyplot as plt test_error_rates = [0.10777777777777775, 0.09999999999999998, 0.07444444444444442, 0.07666666666666666, 0.07222222222222219, 0.06444444444444442, 0.06444444444444442, 0.06222222222222218, 0.06000000000000005, 0.06222222222222218, 0.06222222222222218, 0.06000000000000005, 0.06222222222222218, 0.06222222222222218, 0.06000000000000005, 0.05666666666666664, 0.05555555555555558, 0.05555555555555558, 0.053333333333333344, 0.053333333333333344, 0.054444444444444406, 0.05111111111111111, 0.054444444444444406, 0.054444444444444406, 0.05666666666666664, 0.05666666666666664, 0.05555555555555558, 0.05777777777777782, 0.05777777777777782] plt.plot(range(1,30),test_error_rates) plt.ylabel('ERROR RATE') plt.xlabel('K Neighbor') # 处理K=20到K=25区间的最小值标记 # K从1开始,列表索引从0开始,所以K=20对应索引19,K=25对应索引24(左闭右开切片要取到25) k_start, k_end = 20, 25 sub_rates = test_error_rates[k_start-1 : k_end] min_sub_rate = min(sub_rates) # 换算得到最小值对应的K值 min_k = k_start + sub_rates.index(min_sub_rate) # 绘制红色空心圆圈标记,可按需调整参数 plt.scatter(min_k, min_sub_rate, s=100, facecolor='none', edgecolor='red', linewidth=2) plt.show()
参数说明:
s=100:控制标记的大小,数值越大圆圈越大facecolor='none':设置标记内部为透明,实现空心圆圈效果,删除该参数即可得到实心红色标记edgecolor='red':设置圆圈边框为红色linewidth=2:设置圆圈边框粗细
内容的提问来源于stack exchange,提问作者Arnold Schwarzenegger
相关产品推荐
相关产品推荐

