You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确设置seaborn.kdeplot的x/y轴范围使填充覆盖全坐标区间

问题原因

seaborn.kdeplot默认仅基于输入数据的取值范围计算核密度估计的网格区域,后续调用ax.set_xlim()/ax.set_ylim()仅修改图表显示范围,不会改变已完成计算的KDE结果范围,因此填充区域仅出现在原始数据覆盖的区间。

解决方法

在调用kdeplot时新增clip参数,强制指定KDE的计算范围与你期望的坐标区间一致,配合你已经设置的thresh=0(展示所有密度大于0的区域)即可实现整区间填充。同时注意修正原代码中ax.set_ylim漏写右括号的语法问题。

修改后的完整代码如下:

import matplotlib.pyplot as plt
import seaborn as sns

f, ax = plt.subplots(figsize=(6, 6))
sns.kdeplot(x='est_x',y='est_y',
            data=data_pd.loc[(data_pd.Location=='L2') & (data_pd['Pressing Force (N)']!=0)],
            fill=True, levels=5, color="w", linewidths=1, cmap="rocket", thresh=0, ax=ax,
            clip=((0,5), (0,5))) # 新增clip参数指定KDE计算范围
ax.set_xlim((0,5))
ax.set_ylim((0,5)) # 补全右括号
plt.show()

如果填充边缘不够平滑,可以额外增加gridsize=200参数(默认值为100),提升KDE网格的采样密度,填充效果会更均匀。


内容的提问来源于stack exchange,提问作者Zachary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 06:12:01