2017-04-22 21 views
0

私はggplotを使用して、以下のデータをプロットしていますラベル: enter image description hereggplot:geom_bar積み重ね順序とは

プロット:このプロットで結果の

df$name<- as.factor(df$name) 
df$name <- relevel(df$name, as.character(df$name[3])) 

ggplot(df, aes(name,fc), group=variable)+ 
geom_col(aes(fill=factor(as.numeric(fdr)<0.05)), width = 0.98,color="white")+ 
coord_flip()+scale_fill_manual(values = c("FALSE"= "#00BFC4","TRUE"= "#F8766D"))+ 
geom_hline(yintercept = 0, colour = "gray")+ 
geom_text(aes(label=round(fc,2)),angle = 90, position = position_stack(vjust = 0.5), size =3.5, color= "white") 

:ggplotコードを使用して

df<- data.frame(name= c("g1","g1","p1","p1"),fc = c(-1.32,-2.11,-1.17,-3.23),fdr = c(.0001,.0001,.07,.0002),cond= c("2v1","3v1","2v1","3v1")) 


head(df) 
name fc fdr cond 
g1 -1.32 .0001 2v1 
g1 -2.11 .0001 3v1 
p1 -1.17 .07 2v1 
p1 -3.23 .0002 3v1 

-1.17のバーが上にあり、ラベルがまだ下にある場合は、p1が反転しているように見えます。私は、灰色のバーが下部にあり、ラベルの中央にラベル「1.17」があることを望みます。 私は何か助けていただきありがとうございます。ありがとう

答えて

1

できるだけdata.frameにプロット特性を設定することをお勧めします。これは、エイズをあるレイヤーから別のレイヤーに一貫性を保つのに役立ちます。解決のための

library(ggplot2) 
library(dplyr) 

df <- data.frame(name = c("g1", "g1", "p1", "p1"), 
       fc = c(-1.32, -2.11, -1.17, -3.23), 
       fdr = c(.0001, .0001, .07, .0002), 
       cond = c("2v1", "3v1", "2v1", "3v1")) 

# use dplyr to set the name and fill factors 
# use the group_by to generate the cumsum for defining where the label should be 
# located. 
df <- 
    df %>% 
    dplyr::mutate(name = factor(name, levels = c("p1", "g1")), 
       fill = factor(fdr < 0.05, c(TRUE, FALSE), c("fdr < 0.05", "fdr >= 0.05"))) %>% 
    dplyr::group_by(name) %>% 
    dplyr::mutate(text_y = -cumsum(-fc)) %>% 
    dplyr::ungroup() 

# the plot 
ggplot(df) + 
    aes(x = name, y = fc, fill = fill) + 
    geom_col(width = 0.98, color="white") + 
    coord_flip() + 
    geom_hline(yintercept = 0, colour = "gray") + 
    geom_text(mapping = aes(y = text_y, label = round(fc, 2)), 
      angle = 90, 
      color = "white", 
      position = position_stack(vjust = 0.5), 
      size  = 3.5, 
      color = "white") 

enter image description here

+0

ありがとう!私はdplyrを一度も使用していないので、あなたがそこで何をしたのかは分かりませんが、私はマニュアルを読むことができます。ありがとう! –

関連する問題