R 比例梯度n中更陡的梯度

R 比例梯度n中更陡的梯度,r,ggplot2,colors,R,Ggplot2,Colors,使用R中的ggplot2,我可以获得如下离散色标: 如图所示,这可以生成 然而,它看起来并不好。我想去掉色阶之间的间距,我想也许我可以切换到一个连续的色阶,使用scale\u gradientn()并在不同的颜色之间有一个非常陡峭的渐变。 这样我就可以使用一个连续的色标,它在正确的位置有标签,看起来很棒,而不是一个离散的 然而,这是我能想到的最好的办法: library(ggplot2) ggplot(faithfuld, aes(waiting, eruptions)) + geom_r

使用
R
中的
ggplot2
,我可以获得如下离散色标:

如图所示,这可以生成

然而,它看起来并不好。我想去掉色阶之间的间距,我想也许我可以切换到一个连续的色阶,使用
scale\u gradientn()
并在不同的颜色之间有一个非常陡峭的渐变。 这样我就可以使用一个连续的色标,它在正确的位置有标签,看起来很棒,而不是一个离散的

然而,这是我能想到的最好的办法:

library(ggplot2)
ggplot(faithfuld, aes(waiting, eruptions)) +
  geom_raster(aes(fill = density)) +
  scale_fill_gradientn(
    colours = c("red", "green", "blue", "yellow"), 
    values=c(0, 0.25, 0.25001, 0.5, 0.5001, 0.75, 0.75001,1)
  )

这显然不够好,因为在4个级别之间可以看到明显的颜色变化


这在ggplot2中完全可能吗?

只需使用离散比例:

library(ggplot2)
faithfuld$classes <- cut(faithfuld$density, c(-Inf, 0.01, 0.02, 0.03, Inf))
ggplot(faithfuld, aes(waiting, eruptions)) +
  geom_raster(aes(fill = classes)) +
  scale_fill_manual(name = "density",
                    values = c("red", "green", "blue", "yellow"),
                    labels = c(0.01, 0.02, 0.03, "")) +
  guides(fill = guide_legend(label.vjust = -0.2))
库(ggplot2)

faithfuld$classes您可以在主题中使用图例键高度 设为

 legend.key.height =  unit(0, 'lines')
你是对的,必须做一些尝试和错误我的情节如下

我很难理解你的目标。一开始你说你想要一个连续的比例,但后来你似乎暗示你实际上想要一个离散的比例。在这个例子中,我想要一个有4种颜色的离散比例,但有连续比例的好处:颜色之间的值,颜色级别之间没有空格。在过去,我曾尝试通过多种方式来实现这一点(参见链接问题),并认为如果我能将梯度设置为无限陡峭的话,使用连续刻度可能会奏效。这与我在链接问题中使用的方法相同,并且有许多缺点。首先,您必须使用标签定位值,并在每次更改打印大小、标签数量等时更改它们。其次,只要您使用图例(例如
主题(legend.position=“bottom”)
),您就会发现需要进行更多的调整,这也需要更多地摆弄自定义值。如果你想做一些不寻常的事情(我认为你根本不应该这么做),你应该期望摆弄是必需的。这不是不寻常的事情,它是所有其他绘图系统,包括基本图形,我能做。你所做的违背了我所理解的图形语法。连续导轨连接到连续标尺,离散导轨连接到离散标尺。连续指南不应与离散刻度一起使用。是的,我同意这一点。这将是一个解决办法。不幸的是,当前ggplot中的离散实现阻止了使用标签位于方框之间的这种常见类型的刻度来指示间隔。