如何绘制单个数据点?

Posted

技术标签:

【中文标题】如何绘制单个数据点?【英文标题】:How to plot one single data point? 【发布时间】:2015-03-03 00:13:37 【问题描述】:

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

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

如何显示单个数据点?

【问题讨论】:

好的,谢谢您的回答。是否存在单个数据点的绘图方法?如果是这样,你能说出它的名字吗?谢谢! 彼得,感谢您的提问。我对其进行了编辑以使其成为可重现的最小示例。如果可能,请在以后尝试这样做。我还删除了时间序列和预测标签(这不是建模问题),并添加了 pandas 标签(因为它涉及使用pandas 进行绘图)。 【参考方案1】:

要绘制单个点,您可以执行以下操作:

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

【讨论】:

注意:你也可以省略括号。 我认为 OP 想要的部分内容是让这一点也出现在图例中,因为他们在熊猫绘图中使用了 label 参数。有没有办法在这里做到这一点?在新的可重现示例中,这不起作用:plt.plot(point['x'], point['y'], marker='o', markersize=3, color='red', label='point') 这会使用不同的点集删除绘图的轴。【参考方案2】:

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

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

目前你正在使用

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 中找到各种样式参数。要在不同的样式之间进行选择(例如,如果您在有多个数据点时不需要标记),那么您只需检查数据集的长度,然后使用适当的样式。

【讨论】:

你也不需要重新分配ax【参考方案3】:

使用.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 的方法,右边是我的方法:

【讨论】:

【参考方案4】:

在相关代码的最后一行,将 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')

【讨论】:

以上是关于如何绘制单个数据点?的主要内容,如果未能解决你的问题,请参考以下文章

在我的 matplotlib 图表上绘制了多少个数据点?

有没有一种方法可以绘制 CSV 文件中的数据,其中每列中的每 10 个数据点是同一图表中的不同线?

如何获得离集群中心最近的N个数据点?

如何将lorawan中的数千个数据点发送到单个数据包中?

如何计算两个50个数据点向量之间的逐点t检验?

在 MatLab 中绘制 x 轴