我正在尝试使用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]
。
答案 0 :(得分:3)
在创建散点图时使用参数hue
。如果您没有hue
,则可以根据自己的情况轻松创建一个:
data['hue']=[0]*(len(df)-1)+[1]
sns.scatterplot(x='Predicted', y='Actual', hue='hue', data=data)
答案 1 :(得分:2)
有点hacky,但这行得通。
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)
答案 2 :(得分:1)
如果您想直接使用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()