如何绘制一个数据点?

How to plot one single data point?

我有以下代码来绘制一条线和一个点:

df = pd.DataFrame({'x': [1, 2, 3], 'y': [3, 4, 6]})
point = pd.DataFrame({'x': [2], 'y': [5]})
ax = df.plot(x='x', y='y', label='line')
ax = point.plot(x='x', y='y', ax=ax, style='r-', label='point')

如何显示单个数据点?

绘制单个数据点时,不能使用线条绘制。仔细想想,这是显而易见的,因为在绘制线条时,您实际上绘制了 between 数据点,因此如果您只有一个数据点,那么您没有任何东西可以连接到您的线条。

您可以使用标记绘制单个数据点,这些通常直接绘制在数据点上,因此如果您只有一个数据点也没关系。

目前您正在使用

ax = point.plot(x='x', y='y', ax=ax, style='r-', label='point')

进行绘图。这会产生一条红线(r 代表红色,- 代表线)。如果您使用以下代码,那么您将获得蓝色十字(b 表示蓝色,x 表示十字)。

ax = point.plot(x='x', y='y', ax=ax, style='bx', label='point')

pandas 在内部使用 matplotlib 进行绘图,您可以在表格 here 中找到各种样式参数。要在不同的样式之间进行选择(例如,如果您在有多个数据点时不需要标记),那么您可以只检查数据集的长度,然后使用适当的样式。

要绘制单个点,您可以这样做:

plt.plot([x], [y], marker='o', markersize=3, color="red")

使用.plot(..)方法时存在的另一个问题图例显示为线 不是点 。 要解决这个问题,我建议使用 plt.scatter(..) 这样:

df = pd.DataFrame({'x': [1, 2, 3], 'y': [3, 4, 6]})
point = pd.DataFrame({'x': [2], 'y': [5]})

fig, axes = plt.subplots(1, 2, figsize=(20, 5))

# OP VERSION
df.plot('x', 'y', ax=axes[0], label='line')
point.plot('x', 'y', ax=axes[0], style='r-', label='point')

# MY VERSION
df.plot('x', 'y', ax=axes[1], label='line')
axes[1].scatter(point['x'], point['y'], marker='o', color='r', label='point')
axes[1].legend(loc='upper left')

我得到这个结果,左边是OP的方法,右边是我的方法:

在相关代码的最后一行,将 style='-r' 替换为 kind='scatter' :

ax = point.plot(x='x', y='y', ax=ax, kind='scatter', label='point')

您可以选择将颜色参数添加到对 point.plot 的调用中:

ax = point.plot(x='x', y='y', ax=ax, kind='scatter', label='point', color='red')