matplotlib 干曲线图在轴上被剪切

vojdkbi0  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(155)

我在下面的图片中绘制了图,但轴切断了标记。我不希望水平轴延伸到0之外,但我希望标记在0处完全可见。我已经看到设置clip_on=True来解决问题,但无法用干图做到这一点。谢谢!

下面是我的代码:

x = np.linspace(0, 6, 7)
y = np.ones(7)

fig, ax = plt.subplots(figsize=(3, 1.8))
ax.spines[["left", "bottom"]].set_position(("data", 0))
ax.spines[["top", "right"]].set_visible(False)
ax.spines['bottom'].set_color('gray')
ax.spines['left'].set_color('gray')
ax.tick_params(left=False, bottom=False)

for k, spine in ax.spines.items():
    spine.set_clip_on(True)

ax.stem(x, y, 'black', markerfmt='ko', basefmt=' ')
ax.set_ylim(0, 1.15)
ax.set_xlim(0, 6.5)
plt.show()
jmp7cifd

jmp7cifd1#

您使用set_clip_on在正确的行上,但您需要将其应用于您想要在轴上方显示的艺术家。stem方法返回一个容器,其中包含一些艺术家,我们可以循环使用:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 6, 7)
y = np.ones(7)

fig, ax = plt.subplots(figsize=(3, 1.8))
ax.spines[["left", "bottom"]].set_position(("data", 0))
ax.spines[["top", "right"]].set_visible(False)
ax.spines['bottom'].set_color('gray')
ax.spines['left'].set_color('gray')
ax.tick_params(left=False, bottom=False)

stems = ax.stem(x, y, 'black', markerfmt='ko', basefmt=' ')
for artist in stems.get_children():
    artist.set_clip_on(False)
    
ax.set_ylim(0, 1.15)
ax.set_xlim(0, 6.5)
plt.show()

相关问题