Барплот групп по подсчетам - PullRequest
1 голос
/ 08 апреля 2019

Я пытаюсь сделать барплот

Данные в датафрейме.В этих кадрах данных у меня есть несколько столбцов, один с именем ID и другой счетчик.

Сначала я пытаюсь составить группу из этого количества.На графике мы должны видеть, count = 0, count = 1, count = 2, count> = 3

Некоторые примеры данных

data1 <- data.frame(ID="ID_1", count=(rep(seq(0,10,by=1),each=4)))
data2 <- data.frame(ID="ID_2", count=(rep(seq(0,10,by=1),each=4)))
data3 <- data.frame(ID="ID_3", count=(rep(seq(0,10,by=1),each=4)))

Очевидно, что здесь будут выглядеть столбцы данных.то же самое

Я пытался сделать это в ggplot (это совсем не приятно)

ggplot(data1)+
geom_bar(aes(x = ID, fill = count),position = "fill")+
geom_bar(data=data2,aes(x = ID, fill = count),position = "fill")+
geom_bar(data=data3,aes(x = ID, fill = count),position = "fill")

Я получил что-то подобное WhatIgot Что я пытаюсь сделатьДля этого нужно иметь разные группы в пределах барплота, например, пропорцию отсчетов 0, пропорцию отсчетов 1,2 и пропорцию отсчетов, большую (и равную) до 3.

Я ожидаю что-то подобное

WhatIWant

Но, конечно, в моем примере барплоты будут выглядеть одинаково.Также, если у вас есть предложение изменить ось Y с 1,00 до 100%.

Также одной из моих проблем является то, что длина моих реальных фреймов данных не равна, но это не должно иметь значения, потому что я пытаюсь получитьпроцент от группы подсчета

Ответы [ 2 ]

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

Вам необходимо поместить все данные в 1 кадр данных в формате long .Затем приведите число к факторам, и это сработает.

ggplot(bind_rows(data1, data2, data3)) +
geom_bar(aes(x = ID, fill = as.factor(count)), position = "fill") +
scale_y_continuous(labels=scales::percent)   # To get the Y axis in percentage

enter image description here

0 голосов
/ 09 апреля 2019

Итак, я сделал что-то, чтобы попытаться создать свой барплот

data1$var="first"
data2$var="second"
data3$var="third"
data4$var="fourth"
data5$var="fifth"

full_data=rbind(data1,data2,data3,data4,data5)

ggplot(ppgk) +
geom_bar(aes(x = var, fill = as.factor(Count)), position = "fill")+
scale_y_continuous(labels=scales::percent)

Итак, я получил что-то вроде этого: enter image description here

Если у кого-то есть решение сделать другую группу подсчетов: count = 0, count = 1, count = 2, count> = 3

...