使用 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)
如标题所述,我有一些随机的 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)