Я хотел бы создать диаграмму столбцов, где каждый столбец является одним из двух конкретных цветов - PullRequest
0 голосов
/ 17 мая 2019

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

У меня есть фактический график вместе с использованием ggplot, однако я не уверен, как получить цвет не только на основе «лет», но и установить «Красный» для «Первый год» и «Оранжевый» для Верхнего Класс

structure(list(Hall = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 
8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, NA), .Label = c("Thurston", 
"MVC", "District House", "Mitchell", "Shenkman", "Potomac", "Guthridge", 
"Amdam", "South", "Lafayette", "JBKO", "Madison", "I House", 
"Dakota", "1959", "2109 F", "Fulbright", "Munson", "FSK"), class = "factor"), 
    Total = c(286, 262, 138, 118, 95, 85, 83, 76, 72, 69, 67, 
    67, 64, 60, 56, 52, 44, 43, 42, NA), years = structure(c(1L, 
    1L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 
    1L, 2L, 2L, 2L), .Label = c("First Year", "Upper-Class"), class = "factor")), class = "data.frame", row.names = c(NA, 
-20L))

library(ggplot2)

ggplot(fall5, aes(Hall, Total, width = .9)) + 
  geom_col(aes(fill = Total), position = "dodge2", color = years)+
  guides(fill=FALSE)  +
  theme(axis.text.x=element_text(angle=45, hjust = 1))

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

Ответы [ 2 ]

1 голос
/ 17 мая 2019

Попробуйте это:

ggplot(fall5, aes(Hall, Total, width = .9, fill = years)) + 
  geom_col(stat = "identity", position = "dodge2")+
  theme(axis.text.x=element_text(angle=45, hjust = 1)) + 
  scale_fill_manual(values = c("First Year" = "red", "Upper-Class" = "orange"))

enter image description here

1 голос
/ 17 мая 2019
library(ggplot2)
ggplot(fall5, aes(Hall, Total, width = .9)) + 
  geom_col(aes(fill = years), position = "dodge2")+
  scale_fill_manual(values = c("First Year" = "red",
                               "Upper-Class" = "orange")) +
  theme(axis.text.x=element_text(angle=45, hjust = 1))
...