как построить вертикальное смещение в pyplot - PullRequest
0 голосов
/ 07 октября 2018

У меня есть простой график рассеяния, как показано ниже.После построения графика данных и подгонки я хотел бы показать ошибки (с указанием направления) для каждой точки данных.Я изо всех сил пытаюсь сделать это в matplotlib

%matplotlib inline
import pandas as pd
import matplotlib.pyplot as plt

house_dic={'sqf':[700,950,1100, 1400, 2000],'price': [780, 800, 950, 1500, 1900]}

house=pd.DataFrame(house_dic)
plt.scatter(house['sqf'],house['price'])
plt.xlabel('Square Feet')
plt.ylabel('Price $K')

w=1
y_fit=house['sqf']*w
plt.plot(house['sqf'], y_fit)

, окончательный график должен выглядеть следующим образом (я вручную нарисовал стрелки в ключевой заметке) enter image description here Спасибо

1 Ответ

0 голосов
/ 07 октября 2018

Вы можете использовать plt.arrow().

Первые четыре аргумента: начало x (sqf), начало y (y_fit), изменение x (здесь 0, поскольку мы хотим вертикальные линии) и изменение y (которое ярассчитывается как доля остаточного расстояния).Значения arrow_dim изменяют размер наконечника стрелки.

resid = house['price'] - y_fit
shrink = -.2
arrow_dim = (20, 20)

for i in range(len(house)):
    plt.arrow(house.loc[i, 'sqf'], y_fit[i], 0, resid[i] + resid[i]*shrink , 
              head_width=arrow_dim[0], head_length=arrow_dim[1], fc='r', ec='r')

plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...