You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用更简洁方法为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()

这里的ymaxxmax用的是相对比例(范围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

火山引擎 最新活动