R,ggplot:" Discretizing"连续的矢量

时间:2018-06-18 09:21:44

标签: r ggplot2 visualization data-visualization

为了使色彩渐变形状在绘制"连续:连续" - 交互作为热图时的效果更明显,我正在寻找制作z值的方法(定义颜色填充)离散。

目前我正在使用base::cut()进行一些相当脏的转换以完成它。

有谁知道更好的方法来获得相同的结果?

library(tidyverse)

surface <-   
  volcano %>% 
  as_tibble() %>%
  rownames_to_column(var = "y") %>%
  gather("x", "z", -y) %>%
  mutate(y = y %>% 
           as.integer(),
         x = x %>% 
           str_replace("V", "") %>% 
           as.integer())

surface %>% 
  ggplot(aes(x=x, y=y, fill=z)) +
  geom_bin2d(stat="identity") +
  scale_fill_distiller(palette="YlGnBu")

我默认得到的是:

surface %>% 
  mutate(z = z %>% 
           cut(10, include.lowest=TRUE) %>%
           fct_relabel(. %>% str_replace_all("\\(|\\)|\\[|\\]","")) %>%
           str_split(",") %>%
           map(. %>% as.double() %>% mean()) %>%
           unlist()) %>% 
  ggplot(aes(x=x, y=y, fill=z)) +
  geom_bin2d(stat="identity") +
  scale_fill_distiller(palette="YlGnBu")

我想要的是什么:

修改

unlist()在图例中使用map_dbl()和离散化的颜色栏删除了

surface %>% 
  mutate(z = z %>% 
           cut(10, include.lowest=TRUE) %>%
           fct_relabel(. %>% str_replace_all("\\(|\\)|\\[|\\]","")) %>%
           str_split(",") %>%
           map_dbl(. %>% as.double() %>% mean())) %>% 
  ggplot(aes(x=x, y=y, fill=z)) +
  geom_bin2d(stat="identity") +
  scale_fill_distiller(palette="YlGnBu",
                       guide=guide_colourbar(nbin=10, raster=FALSE))

1 个答案:

答案 0 :(得分:0)

以下仅用一行代替4行代码。它有资格更好吗?

surface %>% 
  mutate(z = z %>% 
           cut(10, include.lowest=TRUE) %>%
           map(. %>% as.integer()) %>%
           unlist()) %>% 
  ggplot(aes(x=x, y=y, fill=z)) +
  geom_bin2d(stat="identity") +
  scale_fill_distiller(palette="YlGnBu")

如您所见,它基本上是相同的算法。