我正在对scale_fill
进行对数变换,并且刻度的顶部未标记。对于线性刻度,这不是问题,因为它是等距的,但是对于对数刻度,必须显示max的值。
鉴于该值未知,是否有某种方法可以强制这种行为?
编辑:代表
suppressPackageStartupMessages(require(tidyverse))
diamonds %>%
mutate(price = price^2)
ggplot(aes(x = carat, y = depth, fill = price)) +
geom_point() +
scale_fill_continuous(trans = "log")
由reprex package(v0.2.1)于2019-03-06创建
期望的行为:价格标尺的顶端(浅蓝色)具有价格最大值的标签。
答案 0 :(得分:3)
breaks
中的scale_*_continuous
参数接受以下一项(添加了强调):
NULL
不间断waiver()
获取转换对象计算出的默认中断- 位置的数字向量
- 将限制作为输入并返回中断作为输出的功能
您可以尝试以下方法:
p <- diamonds %>%
ggplot(aes(x = carat, y = depth, fill = price)) +
geom_point(shape = 21)
p +
scale_fill_continuous(
trans = "log",
breaks = function(x) seq(x[1], x[2], length.out = 5))
或者如果您希望在对数转换后将值均匀地隔开,可以这样做:
p +
scale_fill_continuous(
trans = "log",
breaks = function(x) exp(seq(log(x[1]), log(x[2]), length.out = 5)))
以上仅用于说明。根据使用情况,您可能需要针对不同的中断次数,更好的数字格式(例如,四舍五入到特定的小数位数)等来修改功能。