我想找到一种在ggplot2中调整六边形图大小而无需手动调整binwidth参数的情况下保持正六边形(所有边的长度相等)的方法。

为了显示:

d <- ggplot(diamonds, aes(carat, price))+
  stat_binhex(colour="white")
try(ggsave(plot=d,filename=<some file>,height=6,width=8))


产生至少看起来规则的六边形:



try(ggsave(plot=d,filename=<some other file>,height=6,width=12))


产生不规则的六边形:

documentation描述了binwidth参数(例如binwidth = c(1, 1000)),该参数指定了bin宽度。我想要一个函数,当给定任何绘图大小时,该函数返回正确的binwidth设置以创建规则的六边形。

最佳答案

您可以选择以适当的比率设置coord_fixed,以使绘图不会超出图形设备的尺寸

在这种情况下,5/17000似乎是合理的

d <- ggplot(diamonds, aes(carat, price))+
  stat_binhex(colour="white") + coord_fixed(ratio = 5/17000)


另一个选择是在考虑设备尺寸的比例的情况下创建坐标宽度的宽度和比例。

除非坐标比例是固定的(按照我的第一个示例),否则您不能指望将同一图延伸到一个宽1.5倍的窗口中,而不必看图是否被拉伸。

因此,如果您将宽度拉伸1.5倍,则将x尺寸中的binwidth减小1.5倍

d <- ggplot(diamonds, aes(carat, price))+
   stat_binhex(colour="white",bin.widths = c((5/45),17000/30 ))

08-25 10:36