Ответ 1
Попробуйте многоуровневые грани:
df2 <- melt(df1, id.vars=c("Loc", "Type"))
ggplot(data=df2, aes(x=value, fill=Type)) +
geom_bar() + facet_wrap(~ Loc + variable, nrow=1)
Или, наоборот, facet_grid
, который, я думаю, выглядит лучше, но не совсем соответствует вашему эскизу:
df2 <- melt(df1, id.vars=c("Loc", "Type"))
ggplot(data=df2, aes(x=value, fill=Type)) +
geom_bar() + facet_grid(Loc ~ variable)
Наконец, заимствуя из этого сообщения, вы можете попытаться лучше отличить местоположения по цвету (ясно, что цветовая схема может использовать какую-то работу, но вы понимаете суть):
df2 <- melt(df1, id.vars=c("Loc", "Type"))
ggplot(data=df2, aes(x=value, fill=Type)) +
geom_rect(aes(fill=Loc),xmin =-Inf,xmax=Inf,ymin=-Inf,ymax=Inf,alpha = 0.1) +
geom_bar() +
facet_wrap(~ Loc + variable, nrow=1)
Если вы хотите иметь отдельные панели для каждого местоположения, я думаю, вам нужно будет использовать собственные видовые экраны и грифы. Был пакет ggextra
, который делал это так, но он, похоже, не доступен для самых последних версий R.