在轴顶部绘制标记

18

我正在使用numpy制作一个(x,y)散点图。目前坐标轴从(0,0)开始,延伸到与数据范围对齐。我需要绘制两个位于x=0线上的点。

目前看来符号是在轴之前被绘制的,随后被轴截断。我希望它出现在轴的上方。我相信我可以通过'label'做些什么,但我找不到任何方法使其起作用。

标记有些可见,但它们是可视化的重要组成部分。如果有人有解决方法那就太好了。

3个回答

21

为了使标记实际出现在轴的顶部,您可以使用 zorder

import numpy as np
import matplotlib.pyplot as plt
x = np.array([0,1,2,3,4,5,6])
y = np.array([0,2,0,4.5,0.5,2,3])

plt.plot(x, y, 'o', zorder=10, clip_on=False)
plt.xlim(0, 6)
plt.ylim(0, 4.5)
plt.show()

结果


设置 zorder=10, clip_on=False - one

16
你可以关闭由plt.plot创建的线条对象的剪辑标志。
import numpy as np
import matplotlib.pyplot as plt
x = np.array([0,1,2,3,4,5,6])
y = np.array([0,2,0,4.5,0.5,2,3])

line = plt.plot(x,y,'o')[0]
line.set_clip_on(False)
plt.show()

在这里输入图片描述


1
谢谢。这最初是我所考虑的,但最终我使用了GMT来制作评论的图表。这值得点赞。 - wsavran
5
我相信现在这只是一个关键字参数,“plt.plot(x,y,'o', clip_on=False)” - innisfree
对于Matplotlib的后续版本,请参考ondra.cifka的答案 - Gautam Sreekumar
裁剪功能很好,但它违反了xlim。如果您有任何超出xlim的数据,由于裁剪被关闭(Python 3.9),它仍然会被绘制。有什么解决办法吗? - Dhruv Patel

1

我认为您需要的是plt.axis([xmin,xmax,ymin,ymax]):

import numpy as np
import matplotlib.pyplot as plt
x = np.array([0,1,2,3,4,5,6])
y = np.array([0,2,0,4.5,0.5,2,3])
plt.plot(x,y,'o')
plt.axis()
# (0.0, 6.0, 0.0, 4.5)
plt.axis([-.5,6.5,-.5,5])
plt.show()

enter image description here

你可以使用 plt.axis() 动态获取当前坐标轴,然后加/减一个小的边距值,最后重新设置它。

还要看一下 pyplot.xlim()pyplot.ylim() - Chinmay Kanchi
谢谢。这两个解决方案都非常符合我的要求。任何一个都很完美。抱歉没有点赞,我还是新手,在这里没有那个特权。 - wsavran

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接