Эквивалент geom_freqpoly R-функции в Python для построения частотных полигонов - PullRequest
2 голосов
/ 20 апреля 2019

Как построить частотные полигоны в Python?

Например, я могу построить график плотности следующим образом:

import pandas as pd

x = (1.5,1.5,1.5,1.5,1.5,1.5,1.5,
         2.5,2.5,2.5,
         3.5,3.5,3.5,3.5,3.5,3.5,
         4.5,4.5,
         6.5,6.5,6.5,6.5,6.5,6.5,6.5,6.5)

df = pd.DataFrame({'x': x})
#df.head()

df.plot(kind='density')

Это дает:

enter image description here

Однако я хочу, чтобы многоугольник был таким:

library(ggplot2)

x = c(1.5,1.5,1.5,1.5,1.5,1.5,1.5,
         2.5,2.5,2.5,
         3.5,3.5,3.5,3.5,3.5,3.5,
         4.5,4.5,
         6.5,6.5,6.5,6.5,6.5,6.5,6.5,6.5)

df = data.frame(x=x)
# head(x)

ggplot(data=df, mapping = aes(x=x)) + 
  geom_freqpoly(binwidth=2)

enter image description here

ОБНОВЛЕНИЕ
Я попробовал решение @Quang Hoang для задачи, данной Хэдли в книге «R для науки о данных», и получил аналогичный результат.

Book:

enter image description here enter image description here

Я сохранил данные nycflights13, полученные из R, и поместил их в github.

Вот моя попытка получитьтот же участок:

import numpy as np
import pandas as pd
import seaborn as sns

flights = pd.read_csv('https://github.com/bhishanpdl/Datasets/blob/master/nycflights13.csv?raw=true')

not_cancelled = flights.dropna(subset=['dep_delay','arr_delay'])
not_cancelled.dep_delay.isnull().sum(), not_cancelled.arr_delay.isnull().sum()

delays = not_cancelled.groupby('tailnum')['arr_delay'].mean().reset_index()


x = delays.arr_delay.values
m = int(x.max())
counts, bins = np.histogram(x, bins=range(-80,m,10))
plt.plot(bins[:-1]+1, counts)

enter image description here

1 Ответ

2 голосов
/ 21 апреля 2019

Мне удалось скопировать R-граф с помощью

counts, bins = np.histogram(df.x, bins=range(-1,10,2))
plt.plot(bins[:-1]+1, counts)

Вывод:

enter image description here

Но если вы не совсемуверен, что вы ищете, трудно сказать, что / как изменить для общей ситуации.

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