如何用更简洁方法为Matplotlib Pyplot折线图添加(10,80)参考线?
简化帕累托图十字参考线的绘制方法
当然有更简洁的方式!Matplotlib提供了专门用于绘制垂直/水平参考线的函数,能帮你替代原来冗长的plt.plot()语句,让代码更清爽易读。
方法1:使用axvline()和axhline()
这两个函数可以快速绘制垂直/水平参考线,支持通过相对坐标控制线条范围:
import matplotlib.pyplot as plt plt.figure(figsize=(15,5)) plt.title('Parento Analysis', fontsize=20, color='blue') plt.xlabel('Product', fontsize=14) plt.ylabel('Sales Quantity', fontsize=14) plt.plot(parento['Cum_Product%'], parento['Cum_Sales%'], linewidth=3.0) # 绘制垂直参考线(x=10,从y=0到y=80) plt.axvline(x=10, ymin=0, ymax=0.8, color='k', lw=1, linestyle='--') # 绘制水平参考线(y=80,从x=0到x=10) plt.axhline(y=80, xmin=0, xmax=0.1, color='k', lw=1, linestyle='--') plt.show()
这里的ymax和xmax用的是相对比例(范围0-1),比如ymax=0.8对应y轴的80(假设你的y轴最大值是100),如果y轴范围不同,你可以根据实际情况调整这个比例。
方法2:使用vlines()和hlines()
如果你更喜欢用绝对坐标指定线条范围,vlines()和hlines()会更直观:
import matplotlib.pyplot as plt plt.figure(figsize=(15,5)) plt.title('Parento Analysis', fontsize=20, color='blue') plt.xlabel('Product', fontsize=14) plt.ylabel('Sales Quantity', fontsize=14) plt.plot(parento['Cum_Product%'], parento['Cum_Sales%'], linewidth=3.0) # 垂直参考线:x=10,y从0到80 plt.vlines(x=10, ymin=0, ymax=80, color='k', lw=1, linestyle='--') # 水平参考线:y=80,x从0到10 plt.hlines(y=80, xmin=0, xmax=10, color='k', lw=1, linestyle='--') plt.show()
这种方法直接传入绝对数值,不用转换比例,和你原来的逻辑完全一致,但代码更简洁,语义也更明确——一眼就能看出是在画参考线,而不是普通折线。
对比你原来的代码,这两种方法都把两条plt.plot()语句简化成了更针对性的函数调用,不仅代码行数更少,可读性也大大提升~
内容的提问来源于stack exchange,提问作者Ahamed Moosa




