ggplot 函数 Expand_limits(x = 0) 为许多图形(在循环中)产生非常令人满意的间距,但我不想有零标签。有谁知道如何仅删除零标签?标签也需要是整数,所以我尝试修改 Joshua Cook 的函数:
integer_breaks <- function(n = 5, ...) {
fxn <- function(x) {
breaks <- floor(pretty(x, n, ...))
names(breaks) <- attr(breaks, "labels")
breaks
}
return(fxn)
}
无济于事。一个最小的例子是:
xxx <- c(1, 2, 4, 1, 1, 4, 2, 4, 1, 1, 3, 3, 4 )
yyy <- c(11, 22, 64, 45, 76, 47, 23, 44, 65, 86, 87, 83, 56 )
data <- data.frame(xxx, yyy)
p <- ggplot(data = data, aes(x = data[ , 1], y = data[ , 2]), group = data[ , 1]) + geom_count(color = "blue") + expand_limits(x = 0) + scale_x_continuous(breaks = integer_breaks())
p
我不想要 x 轴上的零,但我事先不知道还有多少个其他 x 轴值。另一种方法是在图表的左侧以与扩展限制类似的方式生成一个空间 - 但其宽度必须与 x 轴值的数量相关。
我认为你走在正确的道路上;如果您在“integer_breaks”函数中删除“breaks”向量的第一个元素,它会产生您想要的结果(如果我理解正确的话),例如
library(tidyverse)
int_breaks_drop_zero <- function(n = 5, ...) {
fxn <- function(x) {
breaks <- floor(pretty(x, n, ...))[-1]
names(breaks) <- attr(breaks, "labels")
breaks[-1]
}
return(fxn)
}
xxx <- c(1, 2, 4, 1, 1, 4, 2, 4, 1, 1, 3, 3, 4 )
yyy <- c(11, 22, 64, 45, 76, 47, 23, 44, 65, 86, 87, 83, 56 )
data <- data.frame(xxx, yyy)
p <- ggplot(data = data, aes(x = data[ , 1], y = data[ , 2]), group = data[ , 1]) +
geom_count(color = "blue") +
expand_limits(x = 0) +
scale_x_continuous(breaks = int_breaks_drop_zero())
p
创建于 2024-03-13,使用 reprex v2.1.0
这能解决你的问题吗?