2016-09-25 38 views
2

This answer顯示如何指定次要休息次數應該去的地方。在the documentation它說minor_breaks可以是一個函數。但是,如我所料,這不是如此輸入繪圖限制,而是主要網格線的位置在下面和上面。ggplot2每個主要休息次數中斷次數的整數倍

製作一個能讓我回到每個專業4個未成年人的腳本似乎並不簡單。這是我想要做的事情,因爲我有一個腳本,我想在多個不同的數據集上使用。我事先不知道這些限制,所以我不能將它們編碼。我當然可以創建一個函數,在繪圖之前從數據集中獲取我需要的值,但看起來似乎過分了。

有沒有一種通用的方法來說明每個主要休息時間的次要休息次數?

回答

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)) 

Image of the example

2

您可以從情節中提取專業,並從那裏計算出您想要的未成年人,並將其設置爲您的情節。

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) 

enter image description here

相關問題