matplotlib使用plot绘制粗线条时如何关闭转角圆角效果
问题:在matplotlib中使用
plot绘图时,是否可以关闭“转角圆角”效果? 场景说明
- 需要在演示文稿中展示复杂的非光滑函数
- matplotlib默认对线条转角做圆角处理,线宽越大该效果越明显
- 为保证图表投影时清晰可见,需要设置较大的线宽
复现示例
import numpy as np import matplotlib.pyplot as plt x = np.linspace(-1, 1, 1001) y = abs(x) plt.plot(x, y, linewidth=10) plt.show()
问题表现
运行上述代码绘制的曲线,在x=0的拐点位置会呈现圆角效果,和该点实际的非光滑尖角特征不符。已尝试增加x采样点数、手动在绘图数据中加入x=0拐点坐标,均无法解决该问题。
解决方案
圆角效果是matplotlib默认的线条连接样式导致的,直接在绘图时指定solid_joinstyle参数为miter即可得到锐利的尖角转角:
# 单条线设置尖角连接 plt.plot(x, y, linewidth=10, solid_joinstyle='miter')
如果需要全局生效,所有绘制的线条都默认使用尖角连接,可以提前修改rc配置:
plt.rcParams['lines.solid_joinstyle'] = 'miter'
参数说明
matplotlib的线条连接样式共支持3种可选值:
miter:尖角连接,拐点处为锐利的尖角,适合绘制非光滑函数round:默认值,圆角连接,拐点处做圆弧过渡bevel:平切连接,拐点处为平直的切面效果
注:如果遇到夹角极小的尖角被自动截断的情况,可以适当调大miterlimit参数适配需求,常规非光滑函数(如绝对值函数、分段线性函数)使用默认miterlimit即可正常显示尖角。
内容的提问来源于stack exchange,提问作者jmlarson
相关产品推荐
相关产品推荐

