如何在R中两次(或多次)绘制相同的条形图

我尝试使用ggplot在同一个图表中多次绘制相同的条形图。

我的代码(我想在图中绘制Empetrum_三次):

temp10A <- ggplot(data, aes(x=Combination, y=Max.Max.Temp, fill=Combination)) 
+ geom_bar(position=position_dodge(), stat="identity") 
+ geom_errorbar(aes(ymin=Max.Max.Temp-se, ymax=Max.Max.Temp+se), width=.2,  position=position_dodge(.9)) 
+ scale_x_discrete(limits=c(**"Empetrum_"**, "Calluna_", "Empetrum_Calluna" , "Pleurozium_", "Hypnum_", "Pleurozium_Hypnum", "Pleurozium_", "Calluna_","Pleurozium_Calluna", "Hypnum_", "Empetrum_"**,"Hypnum_Empetrum", "Hypnum_", "Calluna_","Hypnum_Calluna" , "Pleurozium_", **"Empetrum_"**, "Pleurozium_Empetrum")) 
+ theme(axis.text.x = element_text(angle = 45, hjust = 1))

正如你所看到的,第二次和第三次我想绘制Empetrum_。 当我想多次绘制它们时,Hypnum_,Pleurozium_和Calluna_也是一样的。

有没有人知道如何避免这种自动化的复制或者有其他溶剂?

先谢谢你。


我不相信这实际上是可能的ggplot内。 但是您可以轻松操作数据以获得理想的结果。 例如,在下面的示例中,我将其他行rbind到数据,其中因子级别具有额外的空间。 我用mtcars来获得一个可重现的例子。

# original plot
ggplot(mtcars, aes(factor(cyl))) + geom_bar() 

# function to duplicate a factor level 
duplicate.factor.levels <- function(df, f, lvl, times=1){
  # df: data.frame
  # f: factor
  # lvl: level of factor
  # times: number of duplicates
  df[, f] <- factor(df[, f])
  for (i in 1:times){
    df.lvl <- df[df[, f]==lvl, ]
    lvl <- paste0(' ', lvl, ' ') # just adds spaces before and after 
    df.lvl[, f] <- lvl
    df <- rbind(df, df.lvl)
  } 
  return(df)
}
# duplicate cyl == 4 two more times
mtcars.2 <- duplicate.factor.levels(mtcars, 'cyl', 4, 2)
# plot (same as before with new data)
p <- ggplot(mtcars.2, aes(factor(cyl))) + geom_bar() 
# scale (add spaces to limits...)
p + scale_x_discrete(limits=c('4', '6', ' 4 ', '8', '  4  ')) 
链接地址: http://www.djcxy.com/p/30833.html

上一篇: How to plot the same bar twice (or multiple times) in R

下一篇: xkcd style graphs in MATLAB