使用功能更改ggplot中的轴断点

时间:2019-07-08 21:16:02

标签: r ggplot2

我正在寻找一种在x轴上创建设定休息步骤的方法,类似于此处发布的问题:Change axis breaks without defining sequence - ggplot

我注意到该问题的答案仅适用,因为要绘制的数据在全局环境中分别命名为x和y。 ggplot似乎没有将aes调用中定义的变量“ x”和“ y”传递给scales_x_continuous函数。

即这有效:

x <- 1:10
y <- 1:10

df <- data.frame(x, y)
f <- function(x) seq(min(x), max(x), by = 2)
ggplot(df, aes(x,y)) + geom_point() + scale_y_continuous(breaks = f)

但这会产生错误:“ ...未找到对象'x'”

rm(x, y) #to remove the objects x and y defined earlier
df <- data.frame("xvar" = 1:10, "yvar" = 1:10)
f <- function(x) seq(min(x), max(x), by = 2)
ggplot(df, aes(x,y)) + geom_point() + scale_y_continuous(breaks = f)

是否可以传递在ggplot调用的es部分定义的变量并使第二行代码起作用?

1 个答案:

答案 0 :(得分:0)

您可以将变量命名为任何名称,ggplot将使用您要更改的小数位数指定的值。见下文:

library(tidyverse)

set.seed(123)

dat <- tibble(x = rdunif(10, 5, 20), 
              y = 1:10)

func <- function(bob) seq(min(bob), max(bob), 2)

dat %>% 
    ggplot(aes(x,y)) + 
    geom_point() + 
    scale_y_continuous(breaks = func) + 
    scale_x_continuous(breaks = func)

reprex package(v0.3.0)于2019-07-08创建