绘图显示具有相同标签的两个项目(两行,只有一个标签)ggplot R facet

时间:2019-09-25 17:32:26

标签: r ggplot2

我想用两个截然不同的行来表示一个对象的值,这些对象的名称相同,但其他方面有所不同。 它只能有一行文字。

library(tidyverse)
library(data.table)
#gen some example code
c <- c('a', 'a', 'b', 'b')
d <- c('firstfirst', 'firstfirst', 'lowerupper', 'lowerlower')
e <- c(0.2, 0.3, 0.4, 0.5)
f <- c('w', 'v','w', 'v')
df <- cbind(c,d,e,f)
df<- as.data.frame(df)
df$e <- as.numeric(df$e)
orderd <- c( 'firstfirst', 'firstfirst', 'lowerupper', 'lowerlower' )
df<- within(df, d <- factor(d, levels=orderd))


ggplot(df, aes(x = d, y = e, color = f)) +
  geom_pointrange(aes(min = e - 1.95 * sqrt(e), max = e + 1.95 * sqrt(e)), shape = 15) +
  theme_bw() + 
  facet_wrap(c ~ .,  nrow = 5, strip.position = "left") +
  coord_flip() +
  scale_colour_viridis_d(begin = 0.75 , end = 0) +
  geom_text(aes(label = f), colour = "black", size = 2.5, hjust=1.05, vjust=1.2)

在图形中,我希望两个面板上只有一条线说“ firstfirst”,但我想有两条线,以防f = v,另一条代表f = w。

我目前的解决方法是将其中一个标记为“ firstfirst”(即,具有一个额外的空格)。但是,这只会产生两行,请参见此处的示例:

怎么可能只拥有一次文本却同时拥有两行?

如果可以轻松重现此类多张图,则奖励积分!

图片显示了我想要的(在R之外编辑)。 The picture shows what I want (edited outside of R)

1 个答案:

答案 0 :(得分:1)

最简单的方法是使用position_dodge。以您的示例代码为例,您只需将position_dodge命令添加到geom_pointrange

 geom_pointrange(aes(min = e - 1.95 * sqrt(e), max = e + 1.95 * sqrt(e)), shape = 15, position = position_dodge(width=1)) 

resulting in this picture