ggplot2中的对数颜色比例尺使某些图例数字变形

3

我正在尝试创建一个类似于以下链接中要求和回答的图表: (Is there a built-in way to do a logarithmic color scale in ggplot2?)。

将上述链接中的问题和接受的答案的代码合并,创建了以下 MWE:

require(ggplot2)
n <- 1e5
df <- data.frame(x = rexp(n), y = rexp(n))
p <- ggplot(df, aes(x = x, y = y)) + stat_binhex()

my_breaks = c(2, 10, 50, 100, 200, 6000)
p + scale_fill_gradient(name = "count", trans = "log", breaks = my_breaks, labels = my_breaks)  

这导致了以下图片:

我的输出

由于某种原因,图例的缩放看起来与上面链接的答案不同。在我创建的图表中,图例会将某些数字挤在一起(例如50、100、200),而链接发布的图表似乎会均匀分布图例数字。下面的图片显示了帖子中创建的图例(左侧)和我的图例(右侧)。

图例比较

我喜欢链接中的图例美学,想要重现它。你有什么想法我可能做得不同吗?谢谢。

假设您想保留一个颜色条,而不是离散的图例,则可以执行 my_breaks = round(exp(seq(log(2), log(6000), length=6)), 0),但显然值得调整四舍五入到每10或50等。 - user20650
1个回答

4
使用guide="legend"
p + scale_fill_gradient(name = "count", trans = "log",
                        breaks = my_breaks, labels = my_breaks, guide="legend")

查看 ?scale_fill_gradient

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接