我正在ggplot2中进行箱形图绘制,但是我一直无法找到一种在3 x 3因子设计中处理多种颜色的方法。
这是我能做的示例代码(用作指导thread):
library(ggplot2)
data <- data.frame(
value = sample(1:50),
animals = sample(c("cat","dog","zebra"), 50, replace = TRUE),
region = sample(c("forest","desert","tundra"), 50, replace = TRUE)
)
ggplot(data, aes(animals, value)) + geom_boxplot(aes(fill = animals)) +
facet_grid(~region) + scale_fill_brewer()
我可以将蓝色刻度用于以下类别:沙漠,森林和苔原。您可以看到输出here。
但是,我想为此类别中的每一个使用不同的色标。例如:甜品用黄色标度,森林用绿色标度,苔原用蓝色标度。谢谢!
答案 0 :(得分:1)
最简单的方法是使用alpha
作为透明度,如可能的欺骗所建议的那样。为箱图绘制一个漂亮的图例有点不同,这是一个可行的示例。 (不过,由于它们具有x标签,您可能只需将guide = FALSE
设置为alpha比例即可。)
ggplot(data, aes(animals, value)) +
geom_boxplot(aes(fill = region, alpha = animals)) +
facet_grid( ~ region) +
scale_alpha_discrete(
range = c(0.3, 0.9),
guide = guide_legend(override.aes = list(fill = "black"))) +
scale_fill_manual(values = c("goldenrod2", "forestgreen", "dodgerblue4"))
答案 1 :(得分:0)
您可以通过数据操作以不太优雅的方式进行操作。
library(ggplot2)
library(dplyr)
data <- data.frame(value = sample(1:50),
animals = sample(c("cat","dog","zebra"), 50, replace = TRUE),
region = sample(c("forest","desert","tundra"), 50, replace = TRUE))
data <- data %>%
dplyr::mutate(fill = paste(animals, "-", region))
ggplot(data, aes(animals, value)) +
geom_boxplot(aes(fill = fill), col = "black", show.legend = F) +
facet_grid(~region) +
scale_fill_manual(values = c("gold3", "green3", "blue",
"yellow", "green4", "blue4",
"goldenrod", 'greenyellow', "dodgerblue2"))