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

matplotlib散点图左下角点仅显示一半 保留xlim左边界为x最小值如何解决

解决方案

问题原因:你设置的xlim、ylim恰好对齐了左下角数据点的坐标值,散点标记本身存在固定像素尺寸,导致标记超出坐标轴范围的部分被默认裁剪,因此仅显示一半。以下两种方案均可满足**保留x轴左边界为min(x)**的要求:

方案1:关闭散点的坐标轴裁剪(无需修改坐标轴范围)

直接在scatter方法中添加clip_on=False参数,禁止坐标轴范围外的散点部分被裁剪,是最贴合需求的方案,修改后代码如下:

import numpy as np
from scipy.stats import linregress
import matplotlib.pyplot as plt

c=np.array([0,0.2,0.4,0.8,1.2,1.6,2])
A=np.array([1e-4,0.0866,0.1735,0.3085,0.4233,0.5379,0.7731])
x,y=c,A

reg=linregress(x,y)
# 新增clip_on=False参数
plt.scatter(x,y, clip_on=False)
predict=[i*reg.slope+reg.intercept for i in x]
plt.plot(x,predict,linewidth=3)

plt.xlim((min(x),max(x)))
plt.ylim((min(y),max(y)))

plt.xlabel(r'$\mathit{c} / \mathrm{ mol\cdot L^{-1}}$')
plt.ylabel(r'$A$')
plt.show()

方案2:调整y轴下边界留取少量余量

仅修改y轴下限,x轴左边界保持min(x)不变,通过给y轴下限设置微小的向下偏移量,给散点标记留出足够显示空间,通用适配代码如下:

# 其余代码不变,仅修改ylim设置
y_range = max(y) - min(y)
plt.ylim(min(y) - 0.03 * y_range, max(y))

这里的0.03代表预留3%的y轴范围作为余量,可根据散点大小灵活调整数值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:15:03