我有以下问题:我想在一个箱线图上可视化一个离散变量和一个连续变量,其中后者具有一些极高的值。这使得箱线图没有意义(点甚至是图表的“主体”都太小了),所以我想在log10比例尺上显示它们。我知道我可以从可视化中省略极端值,但我并不打算这样做。
让我们通过钻石数据看一个简单的例子:
m <- ggplot(diamonds, aes(y = price, x = color))
这里的问题并不严重,但我希望你能想象为什么我想看到对数10刻度上的值。让我们试一试:
m + geom_boxplot() + coord_trans(y = "log10")
从图中可以看出y轴是以log10为标度的,看起来不错,但是x轴存在问题,这使得绘图非常奇怪。
如果使用scale_log
则不会出现问题,但是对于我来说这不是一个选项,因为我不能以这种方式使用自定义格式化程序。例如:
m + geom_boxplot() + scale_y_log10()
我的问题是:有没有人知道如何绘制log10比例尺的箱线图,其标签可以自由格式化为像此贴中的formatter
函数?
编辑问题以帮助回答者基于答案和评论:
我真正想要的是:一个log10转换轴(y)以非科学标签进行标注。 我想要将其标记为dollar (formatter=dollar)
或任何自定义格式。
如果我尝试@hadley的建议,我会收到以下警告:
> m + geom_boxplot() + scale_y_log10(formatter=dollar)
Warning messages:
1: In max(x) : no non-missing arguments to max; returning -Inf
2: In max(x) : no non-missing arguments to max; returning -Inf
3: In max(x) : no non-missing arguments to max; returning -Inf
保持y轴标签不变:
coord_trans
中的一个错误 - 但你可以指定自定义标签到scale_y_log10
... - hadley+ scale_y_continous(formatter=dollar)
就不起作用。我看不到任何给定格式化程序的结果,而且我还收到了三个In max(x) : no non-missing arguments to max; returning -Inf
警告消息。 - daroczigformatter="dollar"
? - IRTFM