2017-09-07 36 views
1

x軸上の0〜25の領域の背景が赤、25〜75の領域が黄色、領域が黄色である散布図を作成しようとしています75〜100 ist greenで、どの値が重要かを直ちに確認できます。ggplot2/ggpubr:x軸の間隔に応じて異なる背景色

このトピックに関するすべての質問を検索しましたが、いずれも私の質問に適合していないようです。ここでは短い再現可能例である:

library(tidyverse) 
library(ggpubr) 

v1 <- c(1, 1, 1) 
v2 <- c(1, 0, 0) 
v3 <- c(1, 0, 1) 
v4 <- c(0, 1, 1) 

xG <- c(3, 3, 3, 3) 

input <- c(v1, v2, v3, v4) 
df <- data_frame(values = input, 
       module = c(rep("A", length(v1)), 
          rep("B", length(v2)), 
          rep("C", length(v3)), 
          rep("D", length(v4)))) 

perWorkField <- df %>% 
    group_by(module) %>% 
    summarise(sums = sum(values)) %>% 
    mutate(percent = round((sums/xG) * 100, 2)) 

g <- ggscatter(data = perWorkField, 
      x = "percent", 
      y = "module", 
      shape = 4) 
g <- ggpar(g, xlim = c(0, 100)) 
print(g) 

私はプロットするためggpubrを使用することを好むが、それはggplot2に完全に互換性があります。私はどんな助けにも大変です。前もって感謝します!

EDIT: 明らかに、ggpubrはポイントが色付き領域の背後にあるので、この作業には最適なソリューションではありません。 ggplot2とソリューションは次のようになります。

ggplot(data = perWorkField) + 
geom_point(mapping = aes(x = percent, y = module), shape = 20) + xlim(c(0, 100)) + 
geom_polygon(aes(x=c(0,25,25,0), 
       y=c(0.5,0.5,4.5,4.5)),fill="#F5817A",color=NA) + 
geom_polygon(aes(x=c(25,75,75,25), 
       y=c(0.5,0.5,4.5,4.5)),fill="#FFFF0044",color=NA) + 
geom_polygon(aes(x=c(75,100,100,75), 
       y=c(0.5,0.5,4.5,4.5)),fill="#00FF0044",color=NA) + 
geom_point(mapping = aes(x = percent, y = module)) + theme_light() 

答えて

2

geom_polygonは、プロットの着色領域のためのシンプルなソリューションです。

g <- ggscatter(data = perWorkField, 
      x = "percent", 
      y = "module", 
      shape = 4) 
g <- ggpar(g, xlim = c(0, 100)) + 
geom_polygon(aes(x=c(0,25,25,0),y=c(0.5,0.5,4.5,4.5)),fill="#FFFF0044",color=NA)+ 
geom_polygon(aes(x=c(25,75,75,25),y=c(0.5,0.5,4.5,4.5)),fill="#00FF0044",color=NA) 

print(g) 

enter image description here

+0

トリックをやったおかげ。色がより深い場合でも十字を見えるようにする方法を知っていますか? – jeypeu

+1

@jeypu * ggpubr *についてはわかりませんが、 "regular" * ggplot2 *ではポリゴン(または矩形)レイヤーの後ろにポイントレイヤーを置くので、ポイントはその下にではなくポリゴンの上に置かれます。 – aosmith

+0

@aosmithパーフェクト!私はorgiginal ggplot2コードで書き直しました。うまくいきます。 – jeypeu

関連する問題