说每个方面,我做一个gpplot2
情节就像几个方面如下:不同colourbar在ggplot图
ggplot(iris) +
geom_tile(aes(x = Petal.Width, fill = Sepal.Width, y = Petal.Length)) +
facet_wrap(~Species)
请注意,没有对所有三个地块一个colourbar,但每个方面可能有非常不同的价值。是否有可能为每个方面都有一个单独的颜色条?
说每个方面,我做一个gpplot2
情节就像几个方面如下:不同colourbar在ggplot图
ggplot(iris) +
geom_tile(aes(x = Petal.Width, fill = Sepal.Width, y = Petal.Length)) +
facet_wrap(~Species)
请注意,没有对所有三个地块一个colourbar,但每个方面可能有非常不同的价值。是否有可能为每个方面都有一个单独的颜色条?
我同意Alex's answer,但是根据我的更好的科学和设计判断,我对它进行了刺探。
require(gridExtra)
require(dplyr)
iris %>% group_by(Species) %>%
do(gg = {ggplot(., aes(Petal.Width, Petal.Length, fill = Sepal.Width)) +
geom_tile() + facet_grid(~Species) +
guides(fill = guide_colourbar(title.position = "top")) +
theme(legend.position = "top")}) %>%
.$gg %>% arrangeGrob(grobs = ., nrow = 1) %>% grid.arrange()
当然,那么你复制大量的标签,这是烦人。此外,通过将每个物种绘制为单独的绘图而不是单个绘图的刻面,您会丢失x
和y
刻度信息。您可以通过在该ggplot调用中添加... + coord_cartesian(xlim = range(iris$Petal.Width), ylim = range(iris$Petal.Length)) + ...
来修复坐标轴。
说实话,唯一有意义的方法是如果它比较两个不同的填充变量,这就是为什么你不关心比较他们之间的真实值的情节。一个好的替代方法是使用dplyr::group_by()
和dplyr::percent_rank
将它们重新缩放到一个百分点内。
编辑更新:
在两个不同的变量的情况下,你必须先“融化”的数据,我假设你已经做了。这里我用iris
数据重复它。然后,您可以通过检查百分位数而不是两个变量的绝对值来查看相对值。
iris %>%
tidyr::gather(key = Sepal.measurement,
value = value,
Sepal.Length, Sepal.Width) %>%
group_by(Sepal.measurement) %>%
mutate(percentilevalue = percent_rank(value)) %>%
ggplot(aes(Petal.Length, Petal.Width)) +
geom_tile(aes(fill = percentilevalue)) +
facet_grid(Sepal.measurement ~ Species) +
scale_fill_continuous(limits = c(0,1), labels = scales::percent)
谢谢@布莱恩。我绘制的东西实际上是不同的变量,因此具有不同的比例是有意义的。我只是想尽量简化代码,'facet_wrap'似乎是一个简单的捷径。 – Lyngbakr
Separate palettes for facets in ggplot facet_grid
已经问过。这是迄今为止我看到的最好的解决方案,但是我认为从可视化的角度来看,共用调色板更为理想。
我不认为这是我所要求的完全相同的事情,因为* colourbar *与该解决方案中的所有图相同。 – Lyngbakr
我觉得小倍数(磨制)的一点是要能够比较和对比不同的亚组;具有不同色阶的那种否定意图。考虑到这一点,我认为解决您的问题的办法是创建单个图,并将它们并排显示在常见页面上。 – baptiste
我认为你是对的。真正的情节并不是真正的小组,只是我想一起展示的东西,所以也许个人情节是要走的路。我只是想用我的代码更加简洁一些,这似乎是一个简单的方法。 – Lyngbakr