ggplot scale_uFILL_*force标签位于导轨顶部和底部

ggplot scale_uFILL_*force标签位于导轨顶部和底部,r,ggplot2,R,Ggplot2,我正在做一个刻度填充的对数变换,刻度顶部没有标记。对于线性比例,这不是问题,因为它是等距的,但对于对数比例,必须显示最大值 在未知值的情况下,是否有办法强制执行该行为 编辑:reprex suppressPackageStartupMessages(require(tidyverse)) diamonds %>% mutate(price = price^2) ggplot(aes(x = carat, y = depth, fill = price)) + geom_

我正在做一个
刻度填充的对数变换,刻度顶部没有标记。对于线性比例,这不是问题,因为它是等距的,但对于对数比例,必须显示最大值

在未知值的情况下,是否有办法强制执行该行为

编辑:reprex

suppressPackageStartupMessages(require(tidyverse))

diamonds %>% 
  mutate(price = price^2)
  ggplot(aes(x = carat, y = depth, fill = price)) + 
  geom_point() + 
  scale_fill_continuous(trans = "log")

由(v0.2.1)于2019-03-06创建


所需行为:价格刻度的顶端(浅蓝色)有一个用于价格最大值的标签。

连续
scale.*\u continuous
中的
中断
参数接受以下内容之一(添加强调):

  • NULL
    表示无中断
  • 弃权()
    用于转换对象计算的默认中断
  • 位置的数字向量
  • 将限制作为输入并返回中断作为输出的函数
您可以尝试以下方法:

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))


以上只是为了举例说明。根据您的使用情况,您可能需要修改函数以获得不同的中断数、更好的数字格式(例如,四舍五入到特定的小数位数)等。

是否获得数据?(示例,我的意思是)您可能希望尝试在
缩放填充*
函数中明确指定
限制
中断
,寻求调试帮助的问题(“此代码为什么不工作?”)必须包括所需的行为,一个特定的问题或错误,以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建一个最小的、完整的和可验证的示例。@42-由于shapefile中需要所有数据,所以很难对贴图执行reprex。另外,这是一个非常简单的问题。编辑-我收回它,当然我可以创建一个没有映射的reprex,对不起。@divibisan据我所知,没有办法动态地这样做,正如我在问题中所说的,我需要能够在值未知时这样做。
p + 
  scale_fill_continuous(
    trans = "log",
    breaks = function(x) exp(seq(log(x[1]), log(x[2]), length.out = 5)))