我在 Python 中搜索并找到了类似的帖子,而不是 R。我在这篇帖子Logarithmic y-axis Tick Marks in Rplot() or ggplot2()中使用了 Richie Cotton 的代码。我不想显示次要刻度的所有标签,我只想显示主要刻度,例如 1、10、100 等。请参阅下面的示例图片,这就是为什么我不想显示所有次要刻度的标签。我尝试删除“labels=breaks”在代码中,但什么也没发生。
library(ggplot2)
dfr <- data.frame(x = 1:100, y = rlnorm(100))
p <- ggplot(dfr, aes(x, y)) +
geom_point() +
scale_x_log10(breaks = breaks, labels = breaks)
get_breaks <- function(x){
lo <- floor(log10(min(x, na.rm = TRUE)))
hi <- ceiling(log10(max(x, na.rm = TRUE)))
as.vector(10 ^ (lo:hi) %o% 1:9)
}
breaks <- get_breaks(dfr$x)
log10_breaks <- log10(breaks)
p + labs(axis.ticks = element_line(
size = ifelse(log10_breaks == floor(log10_breaks), 2, 1)
))
Run Code Online (Sandbox Code Playgroud)
你可以这样做。
ggplot(dfr, aes(x, y)) +
geom_point() +
scale_x_log10(breaks = breaks, labels = c(breaks[1:3], rep("", 24)))
Run Code Online (Sandbox Code Playgroud)
产量: