2011-06-28 73 views
4

使用從Hadley's website的例子:R {ggplot2}是否可以查詢繪圖的刻度標記?

> (m <- qplot(rating, votes, data=subset(movies, votes > 1000), na.rm = T))

它創建:

example figure

我的問題:是否有可能確定創建劇情對象後,什麼痕跡蜱? (我想刪除所述第一自動生成斷點)

背景:在上述圖中,可以清楚地看出,與x軸斷裂是在2至9要手動獲取此,使用:

m + scale_x_continuous(breaks = c(2:9))

但我想從圖中確定刻度標記是什麼,以便我可以刪除其中的一些。換句話說,是否有一個函數,它會返回刻度線:

myBreaks <- tickMarks(m)

所以,我可以隨後撥打:

m + scale_x_continuous(breaks = myBreaks[-1])

在那裏我已經從刪除的第一個破發陣列。

+0

看起來你應該能夠訪問構成情節的網格組件。我沒有太多/有任何經驗這樣做,但這篇文章看起來內容豐富:http://rwiki.sciviews.org/doku.php?id=tips:graphics-ggplot2:edit-grob&rev=1243946778,也許有人會來並且給我們一個教訓。 – Chase

+0

我不確定你的意思,但簡單地說,在檢查圖形後手動設置中斷就足夠了,如下所示:'m + scale_x_continuous(breaks = 3:9)'? – kohske

+0

我即將開展大型模擬研究,我將製作大約1000個地塊。 **我需要一個自動化的解決方案** - 我實際上是將數字繪製成四乘四[grid layout](http://learnr.wordpress.com/2009/05/26/ggplot2-two-or-more-more -plots-sharing-the-same-legend /),並且壓縮的視口看起來被很多刻度線所淹沒。 –

回答

3

我不知道這是你想要的,但你可以通過做一個黑客:

# drop first break 
sx <- scale_x_continuous() 
sx$.tr$input_breaks <- function(., range) grid.pretty(range)[-1] 
m <- qplot(rating, votes, data=subset(movies, votes > 1000), na.rm = T) 
m + sx 

# reduce the breaks into half 
sx$.tr$input_breaks <- function(., range) { 
    r <- grid.pretty(range); r[seq_len(length(r)/2)*2] 
} 
m + sx 

# set the (rough) number of breaks 
sx$.tr$input_breaks <- function(., range) pretty(range, 3) 
m + sx 

但請注意,這也影響到y軸...

,可能是簡單的方法來創建自己的變換對象。

TransIdentity2 <- Trans$new("identity2", "force", "force", "force") 
TransIdentity2$input_breaks <- function(., range) pretty(range, 3) 

m + scale_x_continuous(trans="identity2") 

在這種情況下,它不會影響y軸。

相關問題