以离散比例在每个构面网格中编写文本

时间:2018-08-14 06:30:51

标签: r ggplot2

我有以下数据框:

Parameter<-c("As","Hg","Pb")
Loc1<-c("1","10","12")   
Loc2<-c("3","14","9")  
Loc3<-c("5","12","8")
Loc4<-c("9","20","6")
x<-data.frame(Parameter,Loc1,Loc2,Loc3,Loc4)
x$Loc1<-as.numeric(x$Loc1)
x$Loc2<-as.numeric(x$Loc2)
x$Loc3<-as.numeric(x$Loc3)
x$Loc4<-as.numeric(x$Loc4)

我建立了一个具有4个方面的图,每个位置一个图,以显示每个位置不同的重金属浓度。

melt<-melt(x, id=c("Parameter"))
ggplot(melt, aes(x = Parameter, y = value, fill = variable)) +
  geom_bar(stat = "identity", position = "dodge")+
  facet_grid(. ~ variable)

但是,我想在4个方面中的每个方面写文本。我尝试过geom_text,但无法弄清楚如何将不同的文本放入每个构面并将其放置在特定位置。

1 个答案:

答案 0 :(得分:1)

刻面中的带状名称从列variable中的条目中选取;因此在绘制之前,我将重命名variable的条目。

这是一个例子

x %>%
    gather(variable, value, -Parameter) %>%
    mutate(variable = sub("Loc", "Location ", variable)) %>%
    ggplot(aes(x = Parameter, y = value, fill = variable)) +
    geom_bar(stat = "identity", position = "dodge")+
    facet_grid(. ~ variable)

enter image description here


更新

如果您想向特定面板添加文本,建议您将信息存储为新的data.frame。为了确保将标签放置在适当的构面内,您需要确保df.txt的{​​{1}}列与源数据中variable列中的条目相匹配(即该列用于分面)。

variable

enter image description here