在坐标轴上绘制标记

18 投票
3 回答
19132 浏览
提问于 2025-04-17 12:43

我正在尝试用numpy制作一个(x,y)散点图。现在坐标轴是从(0,0)开始的,并且延伸到数据的范围。我需要在x=0的线上绘制两个点。

目前看起来这些符号是在坐标轴之前绘制的,结果被坐标轴截断了。我希望这些点能显示在坐标轴的上面。我觉得可以用'标签'来处理这个问题,但我找不到任何方法来实现。

这些标记虽然有点可见,但它们在可视化中是相当重要的。如果有人有解决办法,那就太好了。

3 个回答

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() 来获取当前的坐标轴,然后在这个基础上加上或减去一点小的边距,再重新设置它。

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()

结果

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()

在这里输入图片描述

撰写回答