我试图制作一系列比较用的图表。例如,我想使用iris
数据集制作一个仅查看setosa物种的图表:
library(ggplot2)
library(dplyr)
iris %>%
filter(Species=="setosa") %>%
ggplot(aes(y = Sepal.Width, x = Sepal.Length, fill = Petal.Length)) +
geom_tile(stat = "identity") +
scale_fill_distiller(palette = "Spectral")
现在如果我想以同样的方式绘制versicolor物种,我可以这样做:
iris %>%
filter(Species=="versicolor") %>%
ggplot(aes(y = Sepal.Width, x = Sepal.Length, fill = Petal.Length)) +
geom_tile(stat = "identity") +
scale_fill_distiller(palette = "Spectral")
我的问题是这些图的填充比例不同。我知道我可以使用facet_wrap
来解决这个问题,但是假设我需要单独的图。我想要的是将相同的填充比例应用于两个图。理想情况下,我仍然希望使用scale_fill_distiller
,但是由于该函数的values
参数略有不同,因此我无法很好地使用它,所以我尝试了scale_fill_gradientn
。首先,我建立了一个fill_range
,如下所示:
fill_range <- seq(min(iris$Petal.Length), max(iris$Petal.Length), by=0.2)
然后我尝试将该序列输入到scale_fill_gradientn
的values参数中,就像这样:
iris %>%
filter(Species=="versicolor") %>%
ggplot(aes(y = Sepal.Width, x = Sepal.Length, fill = Petal.Length)) +
geom_tile(stat = "identity") +
scale_fill_gradientn(colours = terrain.colors(length(fill_range)),
values=fill_range)
iris %>%
filter(Species=="setosa") %>%
ggplot(aes(y = Sepal.Width, x = Sepal.Length, fill = Petal.Length)) +
geom_tile(stat = "identity") +
scale_fill_gradientn(colours = terrain.colors(length(fill_range)),
values=fill_range)
这两种方法都没有产生期望的结果,绘制了一堆灰色的瓷砖,每个瓷砖上只有一个绿色的。
有人知道我在哪里手动指定`scale_fill_distiller`的比例尺吗?如果不可能,有人能看出我在使用`scale_fill_gradientn`时哪里出错了吗?
scale_fill_distiller
中使用limits = c(min(iris$Petal.Length), max(iris$Petal.Length))
。 - aosmith