如何绘制单个数据点?

时间:2015-01-05 12:46:34

标签: python pandas matplotlib plot

我有以下代码来绘制直线和点:

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

如何显示单个数据点?

Plot with line and no point

4 个答案:

答案 0 :(得分:65)

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

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

答案 1 :(得分:4)

绘制单个数据点时,无法使用线条绘图。当您考虑这一点时,这是显而易见的,因为在绘制线条时,您实际上在数据点之间绘制,因此如果您只有一个数据点,那么您没有任何东西可以将您的线路连接到。

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

目前您正在使用

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

答案 2 :(得分:2)

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

FROM python:3.6.9

RUN wget https://s3.amazonaws.com/shopify-managemant-app/wkhtmltopdf-0.9.9-static-amd64.tar.bz2
RUN tar xvjf wkhtmltopdf-0.9.9-static-amd64.tar.bz2
RUN mv wkhtmltopdf-amd64 /usr/local/bin/wkhtmltopdf
RUN chmod +x /usr/local/bin/wkhtmltopdf


WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install -r requirements.txt
COPY . .

EXPOSE 8000

CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

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

答案 3 :(得分:0)

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

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

enter image description here

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

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

enter image description here