matplotlib如何设置线段粗细仅作用于主体、不包含两端端点
问题解决方案
1. Matplotlib内置参数直接解决
存在对应内置参数,你可以通过设置线段的solid_capstyle参数解决这个问题。
Matplotlib绘制线段时默认端点样式为projecting,会向外延伸半个线宽的长度,这就是你观察到粗线段视觉覆盖范围更大的原因。将粗线段的solid_capstyle设置为butt,即可让线段端点严格对齐你指定的坐标位置,不会额外向外延伸。
修改后的示例代码如下:
import matplotlib.pyplot as plt plt.xlim(1, 10) plt.ylim(0,30) plt.grid(True, which="both") # 增加solid_capstyle参数控制端点样式 plt.plot([5, 5], [10, 20], "-", c="pink", linewidth=12, solid_capstyle='butt') plt.plot([5, 5], [10, 20], "-", c="darkgreen", linewidth=1) plt.show()
2. 替代实现方案
如果需要适配更多场景,也可以选择以下两类实现方式:
- 用
vlines函数绘制垂直线,这是Matplotlib专门用于批量绘制垂直线段的API,同样支持solid_capstyle参数,处理大量垂直线段时代码结构更简洁 - 用
matplotlib.patches.Rectangle绘制窄矩形替代线段,矩形的边界坐标完全由用户自定义,不会出现端点溢出问题,适合对边界精度要求极高的场景
内容的提问来源于stack exchange,提问作者Curtis
相关产品推荐
相关产品推荐

