我正在寻找一种在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部分定义的变量并使第二行代码起作用?
答案 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创建