我有一个散点图。我想为每个点绘制坐标线,从X到Y,就像我们以前在学校做的那样。见下图作为参考。
我最终使用了“grid()”属性,但这并不是我想要的。我还尝试使用“axhline”和“axvline”传递xmin,xmax和ymin,ymax,但它不起作用。它跨越了整个情节的一条线。祝你今天愉快!
pcww981p1#
您可以使用vlines绘制垂直线,使用hlines绘制水平线。这些函数与axvline和axhline不同,因为这些函数取0到1之间的值,而vlines和hlines在数据坐标中工作。我将vlines作为ymin传递给y.min(),这样它就不会太低,我将hlines作为xmin传递给x.min(),这样它就不会太靠左。我还调整了散点图的zorder,使线位于点的后面。
vlines
hlines
axvline
axhline
ymin
y.min()
xmin
x.min()
zorder
import numpy as np import matplotlib.pyplot as plt plt.close("all") rng = np.random.default_rng(42) x = np.arange(2009, 2024) y = rng.random(x.size)*13 fig, ax = plt.subplots() ax.scatter(x, y, zorder=3) ax.vlines(x, y.min(), y, color="r", linewidth=0.5) ax.hlines(y, x.min(), x, color="r", linewidth=0.5) fig.show()
1条答案
按热度按时间pcww981p1#
您可以使用
vlines
绘制垂直线,使用hlines
绘制水平线。这些函数与axvline
和axhline
不同,因为这些函数取0到1之间的值,而vlines
和hlines
在数据坐标中工作。我将vlines
作为ymin
传递给y.min()
,这样它就不会太低,我将hlines
作为xmin
传递给x.min()
,这样它就不会太靠左。我还调整了散点图的zorder
,使线位于点的后面。