【发布时间】:2018-02-05 05:38:13
【问题描述】:
我有一个数据集的图,每个图中的过滤方式都不同。我的目标是获得一个共同的图例,其中包括图 my_hist_z、my_hist_y、my_hist_x 上显示的所有因素。
例子:
library(ggplot2); library(gridExtra); library(grid)
z <- subset(diamonds, subset = cut == "Fair" | cut == "Good")
y <- subset(diamonds, subset = cut == "Good")
x <- subset(diamonds, subset = cut == "Premium" | cut == "Fair")
colours = c("Fair" = "#666362",
"Good" = "#D40511",
"Very Good" = "#FFCC00",
"Premium" = "#000000",
"Ideal" = "#BBBBB3")
my_hist_z <-ggplot(z, aes(clarity, fill=cut)) + geom_bar() +
scale_fill_manual(values = colours)
my_hist_y <-ggplot(y, aes(clarity, fill=cut)) + geom_bar() +
scale_fill_manual(values = colours)
my_hist_x <-ggplot(x, aes(clarity, fill=cut)) + geom_bar() +
scale_fill_manual(values = colours)
my_hist<-ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar() +
scale_fill_manual(values = colours)
可能的解决方案: https://andyphilips.github.io/blog/2017/04/04/single-legend-for-multiple-plots.html 仅使用已定义图的一个图例,但不聚合所有涉及的元素。
有什么想法吗?理想情况下,解决方案是动态的,因为这些图被描述为 for 循环的一部分。 谢谢!
【问题讨论】:
-
加
drop = F给你scale_fill_manual电话(即scale_fill_manual(values = colours, drop = F)),这是你要找的吗? -
嗨,kath,谢谢,这是一个开始。但现在它在图例上显示“非常好”,这不是任何图形 x、y、z 的一部分