1

我尝试创建一个散点图,即 x 轴上从 0 到 25 的区域的背景是红色,从 25 到 75 的区域是黄色,从 75 到 100 的区域是绿色的,所以你可以立即看到哪些值是批判的。

我查找了有关该主题的所有问题,但似乎没有一个适合我的问题。这是一个简短的可重现示例:

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 完全兼容。我很感激任何帮助。提前致谢!

编辑:显然 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()
4

1 回答 1

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)

在此处输入图像描述

于 2017-09-07T07:49:48.293 回答