#r #ggplot2 #bar-chart
Вопрос:
он хочет создать сюжет такого типа в ggplot, но не может заставить его работать (сделано в excel):
Так что на оси x есть города, но они расположены в соответствии с тем, в каком состоянии они находятся. Цвет каждого бара основан на каком-то третьем свойстве, например, размере города (большого, малого или среднего), а ось y-это измерение чего угодно! Легенда (большая, маленькая, средняя) должна быть включена, просто ее нет на рисунке, который я вставил сюда.
Примеры данных:
state <- c(rep("Texas",3),rep("Colorado",3),rep("Nevada",3))
city <- c("Houston","Austin","Dallas","Denver","Boulder","Aspen","Reno","Sparks","Henderson")
size <- c(rep(c("large","medium","small"),3))
value <- runif(9, 10,50)
df <- data.frame(state,city,size, value)
До сих пор я делал это:
plot <- ggplot(df, aes(x=State, y=value))
geom_bar(aes(fill=size),position = "dodge", stat = "identity", color="black")
plot
Но тогда каждый бар не помечен названием города.
Есть какие-нибудь идеи?
Ответ №1:
Ответ
(Заслуга https://dmitrijskass.netlify.app/2019/06/30/multi-level-labels-with-ggplot2/ )
Воспользуйся facet_grid
:
ggplot(df, aes(x=city, y = value))
geom_col()
facet_grid(~ state,
scales = "free_x",
space = "free_x",
switch = "x")
Более полная версия
ggplot(df, aes(x=city, y = value))
geom_col()
facet_grid(~ state,
scales = "free_x",
space = "free_x",
switch = "x")
theme(panel.spacing = unit(0, units = "cm"), # removes space between panels
strip.placement = "outside", # moves the states down
strip.background = element_rect(fill = "white") # removes the background from the state names