根据facet_wrap改变抖动点的颜色
Change colour of jitter points according to facet_wrap
我想比较两个不同地点不同颜色的花(红色和绿色)的数量。我在 ggplot2 中有一个箱形图,背景中有一个抖动图。我想让抖动点的颜色根据花的颜色不同。不知道该怎么做!有没有办法根据花的颜色对我的切面进行颜色编码?
一些示例数据:
site <- c(rep(1, 4), rep(2, 4))
colour <- c("red", "green", "red", "green", "red", "green", "red", "green")
number <- c(12, 24, 22, 14, 12, 16, 18, 17)
df <- data.frame(site, colour, number)
df$site <- as.factor(df$site)
ggplot(df, aes(site, number))+
facet_wrap("colour")+
geom_jitter(alpha = 0.3) +
geom_boxplot(alpha = 0, colour = "black")+
theme(legend.position = "none")
将颜色映射到您的列名。如果您希望从字面上解释颜色,请使用身份标度:
ggplot(df, aes(site, number))+
facet_wrap(colour)+
geom_jitter(aes(colour = colour), alpha = 0.3) +
geom_boxplot(alpha = 0, colour = "black") +
scale_color_identity() +
theme(legend.position = "none")
ggplot(df, aes(site, number))+
facet_wrap(~colour)+
geom_jitter(aes(col = colour), alpha = 0.3, show.legend = F) +
geom_boxplot(alpha = 0, colour = "black")+
scale_color_manual(values = c("green", "red"))
虽然这里的两个答案都解决了您的问题,但我认为它们不必要地令人费解。
ggplot(df, aes(site, number)) +
facet_wrap(~colour) +
geom_jitter(alpha = 0.3, color = colour) +
geom_boxplot(alpha = 0, color = "black")
由 reprex package (v0.3.0)
于 2019-05-30 创建
您不需要 theme(legend.position = "none")
因为在您的 geoms
中您没有任何参数 aes()
.
在其中一个答案中,虽然我们将图例位置设置为 none
(因为 colour
在 aesthetics
内,所以需要它)我们也有show.legend = F
这是多余的。
您的 colour
列已经 c("red", "green")
所以我们不需要使用 scale_color
.
我想比较两个不同地点不同颜色的花(红色和绿色)的数量。我在 ggplot2 中有一个箱形图,背景中有一个抖动图。我想让抖动点的颜色根据花的颜色不同。不知道该怎么做!有没有办法根据花的颜色对我的切面进行颜色编码?
一些示例数据:
site <- c(rep(1, 4), rep(2, 4))
colour <- c("red", "green", "red", "green", "red", "green", "red", "green")
number <- c(12, 24, 22, 14, 12, 16, 18, 17)
df <- data.frame(site, colour, number)
df$site <- as.factor(df$site)
ggplot(df, aes(site, number))+
facet_wrap("colour")+
geom_jitter(alpha = 0.3) +
geom_boxplot(alpha = 0, colour = "black")+
theme(legend.position = "none")
将颜色映射到您的列名。如果您希望从字面上解释颜色,请使用身份标度:
ggplot(df, aes(site, number))+
facet_wrap(colour)+
geom_jitter(aes(colour = colour), alpha = 0.3) +
geom_boxplot(alpha = 0, colour = "black") +
scale_color_identity() +
theme(legend.position = "none")
ggplot(df, aes(site, number))+
facet_wrap(~colour)+
geom_jitter(aes(col = colour), alpha = 0.3, show.legend = F) +
geom_boxplot(alpha = 0, colour = "black")+
scale_color_manual(values = c("green", "red"))
虽然这里的两个答案都解决了您的问题,但我认为它们不必要地令人费解。
ggplot(df, aes(site, number)) +
facet_wrap(~colour) +
geom_jitter(alpha = 0.3, color = colour) +
geom_boxplot(alpha = 0, color = "black")
您不需要
theme(legend.position = "none")
因为在您的geoms
中您没有任何参数aes()
.在其中一个答案中,虽然我们将图例位置设置为
none
(因为colour
在aesthetics
内,所以需要它)我们也有show.legend = F
这是多余的。您的
colour
列已经c("red", "green")
所以我们不需要使用scale_color
.