防止轴切断 matplotlib 散点图中的点

问题描述 投票:0回答:2
import matplotlib.pyplot as plt


x = [1, 2, 3, 4]
y = [0, 1, 7, 2]

plt.scatter(x, y, color='red')
plt.title('number of iterations')
plt.xlim([1, 4])
plt.ylim([1, 8])

如果要绘制此数据,轴上的点会被部分切除。有没有办法防止这种情况(即可以将点绘制在轴的顶部)?

python matplotlib scatter-plot
2个回答
2
投票

clip_on
属性设置为
False
允许您超出轴,但默认情况下轴将位于顶部。例如,脚本

x = [1, 2, 3, 4]
y = [0, 1, 7, 2]

plt.scatter(x, y, color="red", clip_on=False)
plt.title('number of iterations')
plt.xlim([1, 4])
plt.ylim([1, 8])

产生以下结果。

enter image description here

请注意,轴“穿过”点。如果您希望点位于轴/标签的顶部,则需要更改默认值

zorder
。例如,脚本

x = [1, 2, 3, 4]
y = [0, 1, 7, 2]

plt.scatter(x, y, color="red", clip_on=False, zorder = 10)
plt.title('number of iterations')
plt.xlim([1, 4])
plt.ylim([1, 8])

产量

enter image description here

注意:任何

zorder
值 3 或更大都可以在这里使用


0
投票

(对于那些想尝试不同方法的人)

我有一段时间面临同样的问题。我意识到我已经在一个地方设置了全局 rc_params,并且我将 x/y 边距设置为 0。将这些边距更改为像 0.1 这样的小值对我有帮助。

  • 使用 Matplotlib:

    import matplotlib as mpl
    mpl.rcParams["axes.xmargin"] = 0.1
    mpl.rcParams["axes.ymargin"] = 0.1
    
  • 使用Seaborns sns.set

    sns.set(
       rc={
            "axes.xmargin": 0.1,
            "axes.ymargin": 0.1,
        }
    )
    
© www.soinside.com 2019 - 2024. All rights reserved.