Генерировать парные столбчатые гистограммы в ggplot (используя position dodge только для некоторых переменных)
Я надеюсь использовать ggplot2
чтобы создать набор штабелированных баров в парах, примерно так:
со следующими данными примера:
df <- expand.grid(name = c("oak","birch","cedar"),
sample = c("one","two"),
type = c("sapling","adult","dead"))
df$count <- sample(5:200, size = nrow(df), replace = T)
Я хотел бы, чтобы ось x представляла имя дерева с двумя барами на вид дерева: один бар для образца один и один бар для образца два. Затем цвета каждого бара должны быть определены по типу.
следующий код генерирует сложенную панель с цветами по тип:
ggplot(df, aes(x = name, y = count, fill = type)) + geom_bar(stat = "identity")
и следующий код генерирует уклоненные бары по образцу:
ggplot(df, aes(x = name, y = count, group = sample)) + geom_bar(stat = "identity", position = "dodge")
но я не могу заставить его уклониться от одной из групп (образец) и сложить другую группу (тип):
ggplot(df, aes(x = name, y = count, fill = type, group = sample)) + geom_bar(stat = "identity", position = "dodge")
1 ответов
одним обходным путем было бы поставить взаимодействие sample
и name
на оси x, а затем отрегулируйте метки для оси X. Проблема в том, что бары не расположены близко друг к другу.
ggplot(df, aes(x = as.numeric(interaction(sample,name)), y = count, fill = type)) +
geom_bar(stat = "identity",color="white") +
scale_x_continuous(breaks=c(1.5,3.5,5.5),labels=c("oak","birch","cedar"))
другое решение-использовать фасеты для name
и sample
Как значения x.
ggplot(df,aes(x=sample,y=count,fill=type))+
geom_bar(stat = "identity",color="white")+
facet_wrap(~name,nrow=1)