我可以更改框图中图例中使用的符号吗?我想使用正方形而不是默认的boxplot符号。经过一些搜索后我尝试了以下内容,但最后一行似乎没有效果:
df = data.frame(x = rnorm(10), y = sample(letters[1:2], 10, TRUE))
library(ggplot2)
ggplot(df, aes(y, x)) +
geom_boxplot(aes(color = y)) +
guides(fill = guide_legend(override.aes = list(shape = 22)))
原因是这个剩下的另一个图表使用了相同的颜色而是点而不是箱线图,所以我想要一个适合两者的图例。
答案 0 :(得分:3)
我想有多种方法可以达到你想要的效果,但我通常做的是:
geom_point
0
图层
geom_point
的图例,而不更改geom_boxplot
代码:
df <- data.frame(x = rnorm(10),
y = sample(letters[1:2], 10, TRUE))
library(ggplot2)
ggplot(df, aes(y, x, color = y)) +
# Add dummy point layer with invisible points (size 0)
geom_point(size = 0, shape = 22) +
# Don't show legend
geom_boxplot(show.legend = FALSE) +
# Increase point size
guides(color = guide_legend(override.aes = list(size = 10)))
结果:
答案 1 :(得分:1)
不漂亮,但你可以像这样破解它:
library(dplyr)
library(ggplot2)
set.seed(42)
df <- data.frame(x = rnorm(10), y = sample(letters[1:2], 10, TRUE))
df_sum <- df %>% group_by(y) %>% summarize(mean_x = mean(x))
ggplot(df, aes(y, x)) +
geom_point(data = df_sum, aes(y, mean_x, color = y), shape = 22) +
geom_boxplot(aes(color = y), show.legend = F)