首页 > 解决方案 > 带有分隔符而不是刻度的连续颜色条

问题描述

图片应该很好地说明我想要实现的目标。理想情况下,生成的颜色条将保持连续的性质,即,应该基于连续而不是离散的美学,或者至少非常接近以表现得像它。

这也意味着,不仅仅是将离散填充的图例键足够靠近的简单方法。

是的,我可以创建一个假的 legend,但我想要一个在图例绘图级别进行修改的解决方案。

我也会对有趣的网格黑客非常满意!

library(ggplot2)

ggplot(iris, aes(Sepal.Length, y = Sepal.Width, fill = Petal.Length))+
  geom_point(shape = 21) +
  scale_fill_continuous() +
  guides(fill = guide_colorbar(ticks.colour = "black"))

截图了,见谅!我不想创建箭头,只是带有分隔符而不是刻度的连续刻度 在此处输入图像描述

最终目标是重现此线程中最初提出的颜色条 在此处输入图像描述

然而,这不是关于创建离散梯度条,这只是关于分隔符!

离散渐变条不是问题,已经有解决方案(例如,https : //stackoverflow.com/a/62544405/7941188、https : //stackoverflow.com/a/62556763/7941188、https:// stackoverflow.com/a/50540633/7941188

标签: rggplot2legend

解决方案


当然有一个快速的网格破解 Tjebo,但它可能需要一些工作才能使其健壮(按名称而不是按数字索引):

library(ggplot2)
library(grid)

p <- ggplot(iris, aes(Sepal.Length, y = Sepal.Width, fill = Petal.Length))+
  geom_point(shape = 21) +
  scale_fill_continuous() +
  guides(fill = guide_colorbar(ticks.colour = "black"))

gt <- ggplot_gtable(ggplot_build(p))

x1 <- gt$grobs[[which(gt$layout$name == "guide-box")]]$grobs[[1]]$grobs[[5]]$x1
x1[1:7] <- x1[8:14]
gt$grobs[[which(gt$layout$name == "guide-box")]]$grobs[[1]]$grobs[[5]]$x1 <- x1
grid.newpage()
grid.draw(gt)

reprex 包(v0.3.0)于 2020 年 6 月 24 日创建


推荐阅读