为了使色彩渐变形状在绘制"连续:连续" - 交互作为热图时的效果更明显,我正在寻找制作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))
答案 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")
如您所见,它基本上是相同的算法。