здесь есть ответ

я есть этот фрейм данных:

Unit <- c(A, B, C, D)
Yes <- c(50, 65, 20, 41)
No <- c(70, 67, 40, 20)
Missing <- c(10, 12, 8, 7)
df <- data.frame(Unit, Yes, No, Missing)

Я хочу использовать простые гистограммы, такие как в Excel (см. Прилагаемый график):Excel Plot

https://i.stack.imgur.com/BvWSA.jpg

Я использовал ggplot, но только для одного Var. Если я добавлю другие, это даст мне ошибку:

ggplot(data = df, aes(x = Unit, y = Yes)) +
  geom_col() +
  geom_text(aes(label = Yes), position = position_stack(vjust = 0.5))

Спасибо.

 MrFlick24 окт. 2017 г., 18:57
Вы пробовали что-нибудь? где именно ты застрял?
 akrun24 окт. 2017 г., 19:04
Попробуй сgather то естьgather(df, key, val, -Unit) %>% group_by(Unit, key) %>% ggplot(., aes(x = Unit, y = val, fill = key)) + geom_col()
 Vip24 окт. 2017 г., 22:57
Как я могу использовать geom_bar для построения всех переменных (Да, Нет, Отсутствует) для всех единиц (A, B, C и D)? Могу ли я сделать это на одном сюжете, как на прилагаемой картинке в оригинальном сообщении?
 juan24 окт. 2017 г., 18:57
Я бы создал длинный, а не широкийdata.frameтогда попробуй?geom_bar
 r2evans24 окт. 2017 г., 19:04
Это должно бытьUnit <- c("A", "B", "C", "D")? В противном случае, пожалуйста, определите эти переменные.

Ответы на вопрос(1)

а не в широком формате, чтобы отобразить их в ggplot

Unit <- c("A", "B", "C", "D") #character objects need quotes
Yes <- c(50, 65, 20, 41)
No <- c(70, 67, 40, 20)
Missing <- c(10, 12, 8, 7)
df <- data.frame(Unit, Yes, No, Missing)

require(tidyr)
df.long <- gather(df, variable,value, -Unit)

Как только данные в длинном формате,position_dodge() даст вам график, который вы хотите

ggplot(data = df.long, aes(x = Unit, y = value, fill = variable)) +
  geom_col(position = position_dodge()) 

 Jan Boyer25 окт. 2017 г., 18:21
Ваш вопрос о размещении этикеткиздесь есть ответ
 Vip25 окт. 2017 г., 16:08
Привет, Ян, есть одна проблема, когда я добавляю метку на график, метки находятся не на тех столбцах !!! ggplot (data = df.long, aes (x = единица измерения, y = значение, заполнение = переменная)) + geom_col (position = position_dodge ()) + geom_text (label = df.long $ value, position = position_dodge (0.9)) + labs (y = "Count", x = "Unit") Как я могу расположить метки в правильных столбцах?

Ваш ответ на вопрос