This answer显示了如何指定次要休息时间的位置。在the documentation中,它表示minor_breaks
可以是一个函数。然而,这可以作为输入,如我预期的那样,绘图限制不是下面和上面的主要网格线的位置。
制作一个可以让我返回的剧本,比如每个专业的4个未成年人,似乎并不是很简单。这是我想要做的事情,因为我有一个脚本,我想在多个不同的数据集上使用。我事先并不知道这些限制,因此我无法对它们进行硬编码。我当然可以创建一个函数,在绘图之前从数据集中获取所需的值,但这似乎有点过分。
是否有一般方法说明每次重大突破的次要休息次数?
答案 0 :(得分:3)
你可以从情节中提取主要内容,并从那里计算你想要的未成年人并为你的情节设置它。
df <- data.frame(x = 0:10,
y = 0:10)
p <- ggplot(df, aes(x,y)) + geom_point()
majors <- ggplot_build(p)$panel$ranges[[1]]$x.major_source
multiplier <- 4
minors <- seq(from = min(majors),
to = max(majors),
length.out = ((length(majors) - 1) * multiplier) + 1)
p + scale_x_continuous(minor_breaks = minors)
答案 1 :(得分:1)
我认为scales::extended_breaks
是连续比例的默认函数。您可以在此函数中设置中断的数量,并使minor_breaks
的数量为breaks
的整数倍。
library(ggplot2)
library(scales)
nminor <- 7
nmajor <- 5
ggplot(iris, aes(x = Species, y = Sepal.Length)) +
geom_point() +
scale_y_continuous(breaks = extended_breaks(n = nmajor), minor_breaks = extended_breaks(n = nmajor * nminor) )
答案 2 :(得分:0)
使用ggplot2版本3,我必须稍微修改一下Eric Watt的代码,才能使其正常工作(因为我还没有50的声誉,所以我无法对此发表评论)
library(ggplot2)
df <- data.frame(x = 0:10,
y = 10:20)
p <- ggplot(df, aes(x,y)) + geom_point()
majors <- ggplot_build(p)$layout$panel_params[[1]]$x.major_source;majors
multiplier <- 10
minors <- seq(from = min(majors),
to = max(majors),
length.out = ((length(majors) - 1) * multiplier) + 1);minors
p + scale_x_continuous(minor_breaks = minors)
如果我在编辑器中复制粘贴相同的代码,则它不会创建专业(NULL),因此下一行会显示错误。