Построение последних точек данных с помощью диаграммы рассеяния Seaborn - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь построить график зависимости прогнозируемой и фактической цены акций с помощью диаграммы рассеяния Seaborn. Я могу построить точную диаграмму рассеяния, но я хочу также визуализировать, где находятся сегодняшние данные, в другом цвете.

Я пытался сделать:

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

и вычерчиваем это, но получили это сообщение об ошибке:

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

Любая помощь будет очень приветствоваться.

EDIT:

Итак, у меня есть df, содержащий столбцы данных о ценах df['Prediction'] и df['Actual'], код для печати графика рассеяния, который я использовал до сих пор, очень полезен:

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

То, что я ищу, - это просто нанести поверх этого исходного графика рассеяния самые последние данные для x и y, поэтому .iloc[-1] для каждого, если хотите.

Ответы [ 3 ]

3 голосов
/ 08 мая 2019

Используйте аргумент hue при создании диаграммы рассеяния.Если у вас нет hue, вы можете легко создать его для своего простого дела:

data['hue']=[0]*(len(df)-1)+[1]
sns.scatterplot(x='Predicted', y='Actual', hue='hue', data=data)
2 голосов
/ 08 мая 2019

В случае, если вы хотите использовать 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()

enter image description here

2 голосов
/ 08 мая 2019

Немного хак, но это работает.

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