如何绘制一个数据点?
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')
我有以下代码来绘制一条线和一个点:
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')