ggplot2/ggpubr:不同的背景颜色取决于x轴间隔
ggplot2/ggpubr: Different background colors depending on x axis interval
我尝试创建一个散点图,即 x 轴上 0 到 25 区域的背景为红色,25 到 75 区域为黄色,75 到 100 区域为绿色,因此您可以立即查看哪些值是关键的。
我查了所有关于这个主题的问题,但 none 似乎符合我的问题。这是一个简短的可重现示例:
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()
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)
我尝试创建一个散点图,即 x 轴上 0 到 25 区域的背景为红色,25 到 75 区域为黄色,75 到 100 区域为绿色,因此您可以立即查看哪些值是关键的。
我查了所有关于这个主题的问题,但 none 似乎符合我的问题。这是一个简短的可重现示例:
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()
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)