使用 python 在 x,y 点的每个点绘制垂直线和水平线

Drawing vertical and horizontal lines at each point x,y point using python

如标题所述,我有一些随机的 X 和 Y 数据点:

+-----+-----+
| P1X | P1Y |
+-----+-----+
|   1 |   2 |
|   2 |   3 |
|  -1 |   4 |
+-----+-----+

d = {'P1X': [1,2,-1], 'P1Y': [2,3,4]}
df_data = pd.DataFrame(data=d)

然后我使用散点图绘制它们,如下所示:

import seaborn as sns
from matplotlib import pyplot as plt

ax = sns.scatterplot(data=df_data, x='P1X', y='P1Y', legend=False)
plt.show()
 

现在如何在每个点水平和垂直绘制一条黑线? 感谢所有答案!

您可以简单地遍历 x 和 y 值,并从 plt 调用 axvline 和 axyline。

import matplotlib.pyplot as plt

x_data = [-1, 2, 3]
y_data = [2, 3, 5]

plt.scatter(x_data, y_data, c='red')

for x, y in zip(x_data, y_data):
    plt.axvline(x=x, color='b', linestyle='-')
    plt.axhline(y=y, color='g', linestyle='-')

既然你打算手动设置绘图的限制,那么你可以使用 ax.hlines/ax.vlines,为每个发送唯一点坐标的数组。

xlims=(-1.1, 2.1)
ylims=(1.9, 4.9)

fig, ax = plt.subplots()

df_data.plot(kind='scatter', x='P1X', y='P1Y', ax=ax)

ax.hlines(df_data['P1Y'].unique(), xlims[0], xlims[1], color='grey', zorder=-1)
ax.vlines(df_data['P1X'].unique(), ylims[0], ylims[1], color='grey', zorder=-1)

ax.set_xlim(xlims)
ax.set_ylim(ylims)