使用 Seaborn 散点图绘制最近的数据点

Plotting the most recent data points with Seaborn scatterplot

我正在尝试使用 Seaborn 的散点图绘制股票的预测值与实际值,我可以很好地绘制散点图,但我想做的也是用不同的颜色可视化今天的数据。

我试过:

current_x = df['Prediction'].iloc[-1]
current_y = df['Actual'].iloc[-1]

并绘制但收到此错误消息:

ValueError: If using all scalar values, you must pass an index.

如有任何帮助,我们将不胜感激。

编辑:

所以我有一个 df 包含 df['Prediction']df['Actual'] 列的价格数据,到目前为止我使用的打印散点图的代码非常简单:

sns.scatterplot(x='Predicted', y='Actual, data=data)

我正在寻找的只是在这个原始散点图的顶部绘制 x 和 y 的今天最新数据,所以每个 .iloc[-1],如果你愿意的话。

有点老套,但这行得通。

data = pd.DataFrame({'Prediction': np.random.rand(10), 
                     'Actual': np.random.rand(10)})

sns.scatterplot(x='Prediction', y='Actual', data=data)
sns.scatterplot(x='Prediction', y='Actual', data=data.iloc[-1].to_frame().T)

创建散点图时使用参数 hue。如果您没有 hue,您可以为您的简单案例轻松创建一个:

data['hue']=[0]*(len(df)-1)+[1]
sns.scatterplot(x='Predicted', y='Actual', hue='hue', data=data)

如果您想直接使用 matplotlib 而不是 seaborn,可以非常直接地绘制除最后一点和最后一点之外的所有内容。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

data = pd.DataFrame({'Prediction': np.random.rand(10), 
                     'Actual': np.random.rand(10)})

# Plot all but the last point
plt.scatter(x='Prediction', y='Actual', data=data.iloc[:-1])
# Plot only the last point
plt.scatter(x='Prediction', y='Actual', data=data.iloc[-1])

plt.show()