R 如何使用geom_hex在两个绘图之间创建一致的色标

R 如何使用geom_hex在两个绘图之间创建一致的色标,r,ggplot2,data-visualization,hexagonal-tiles,R,Ggplot2,Data Visualization,Hexagonal Tiles,我试图在两个图之间做一个前后比较,所以我需要它们都有相同的色阶,这样才能进行真正的比较。我已经尝试了一段时间来改变geom_hex的颜色比例,但我只找到了提供最小/最大截止值的方法。是否可以手动将刻度设置为定义的范围,例如1-100?下面是我的绘图代码和示例 ggplot() + geom_hex(aes(x=VolumeBefore$Flow, y=SpeedBefore$Speed)) + xlab("Flow") + ylab("Speed (MPH)")+ theme(leg

我试图在两个图之间做一个前后比较,所以我需要它们都有相同的色阶,这样才能进行真正的比较。我已经尝试了一段时间来改变geom_hex的颜色比例,但我只找到了提供最小/最大截止值的方法。是否可以手动将刻度设置为定义的范围,例如1-100?下面是我的绘图代码和示例

ggplot() +
  geom_hex(aes(x=VolumeBefore$Flow, y=SpeedBefore$Speed)) +
  xlab("Flow") + ylab("Speed (MPH)")+
  theme(legend.justification=c(1,0), legend.position=c(1,0), text = element_text(size = 20)) +
  ggtitle('Speed-Flow Before Density Plot')

ggplot() +
  geom_hex(aes(x=VolumeAfter$Flow, y=SpeedAfter$Speed)) +
  xlab("Flow") + ylab("Speed (MPH)")+
  theme(legend.justification=c(1,0), legend.position=c(1,0), text = element_text(size = 20)) +
  ggtitle('Speed-Flow After Density Plot')

在这两张图片中,您可以看到比例不同,我只想让它们相同:)
谢谢

这里有一种使用
scale\u fill\u gradient2
oob=scales::squish
的方法,可以指定填充的上下限范围,并限制超出该范围的任何值

请注意,如果没有规范,填充将使用数据中的全部密度范围:

ggplot(diamonds) +
  geom_hex(aes(x=carat,y=price)) +
  scale_fill_gradient2()

我们可以交替地直接指定范围,将超出范围的任何内容钳制在该范围内。这将允许您匹配多个绘图的图例范围:

ggplot(diamonds) +
  geom_hex(aes(x=carat,y=price)) +
  scale_fill_gradient2(limits = c(0, 3000), oob = scales::squish)

我不确定你所说的最大/最小值是什么意思,但是在
比例填充连续()中设置
极限=c(1100)
应该可以实现你所描述的。(旁注:永远不要用
$
引用
aes()
中的变量;始终执行
ggplot(data=volumebeefore),aes(x=Flow,y=Speed)
)非常感谢@joran提供的信息,这很好!太棒了,这正是我需要的,它工作得非常好!您也可以使用“缩放、填充、连续”来执行相同的操作。