手动设置scale_fill_distiller()的比例

时间:2016-07-20 22:38:42

标签: r ggplot2

我正在尝试制作一系列用于比较的图表。比方说,我想使用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")

enter image description here

现在,如果我想以同样的方式绘制多色物种,我可以这样做:

iris %>%
  filter(Species=="versicolor") %>%
  ggplot(aes(y = Sepal.Width, x = Sepal.Length, fill = Petal.Length)) +
  geom_tile(stat = "identity") +
  scale_fill_distiller(palette = "Spectral")

enter image description here

我的问题是这些情节的填充比例不同。我知道我可以facet_wrap来解决这个问题,但我们只是说我需要个别情节。我想要的是将相同的填充比例应用于两个图。理想情况下,我希望继续使用scale_fill_distiller,但由于该函数的值参数有点不同,我无法获得更远,因此我尝试了scale_fill_gradientn。首先,我建立了fill_range,如此:

fill_range <- seq(min(iris$Petal.Length), max(iris$Petal.Length), by=0.2)

然后我尝试将seq输入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"? If that is not possible, can anyone see where I have gone wrong with scale_fill_gradientn`的比例?

1 个答案:

答案 0 :(得分:13)

您可以在 if key_resp.corr feedback= hit_sound.play else: feedback= miss_sound.play 中的两个地块中将 if key_resp.corr: hit_sound.play() else: miss_sound.play() 设置为相同。

使用limits的{​​{1}}和scale_fill_distiller作为限制:

min

enter image description here

max

enter image description here