2015-08-17 287 views
0

我正在使用ggplot2尋找圖形幫助。 我對不同的變量(A和B)對同一變量C進行繪圖。變量A的值從-20到20,而變量B的值從-2到2.使用ggplot2時,y軸標籤爲離變量A的軸線比變量B的軸線更遠,因爲20佔用比2更多的空間並且標籤與數字具有相同的距離。設置y軸標籤位置ggplot2

我希望兩者的距離相同。是否有可能定義軸標籤和線之間的距離?

我嘗試過使用主題(axis.title.y = element_text(vjust =)),但是這使得很難設置距離相等。

我也嘗試在我的yaxis標題後添加「\ n」,如這裏所建議的(https://groups.google.com/forum/#!topic/ggplot2/mK9DR3dKIBU),但這也不能解決我的問題。

使用PlantGrowth數據的一個例子:

bp <- ggplot(PlantGrowth, aes(x=group, y=weight)) + 
     geom_boxplot()+ 
     theme_classic(base_size=16) + 
     ylim(c(3,7))+ 
     coord_fixed(ratio=(3)/(4)) 

bp1000 <- ggplot(PlantGrowth, aes(x=group, y=weight*1000)) + 
     geom_boxplot()+ 
     theme_classic(base_size=16) + 
     ylim(c(3000,7000))+ 
     coord_fixed(ratio=(3)/(4000)) 

你會看到,y軸(「權重」)的標籤是更遠離軸線爲bp1000比BP,即使與coord_fixed( )保持繪圖區域相同是很容易的。

如何定義bp的ylabel距離應與bp1000相同(即更長)。

+0

製作的例子。使其成爲一個可重複的簡單例子。您可以使用您的真實數據(與'dput()'共享),模擬數據或最簡單的選擇,內置數據(也許'mtcars','hp'和'mpg' vs'wt')。顯示你嘗試過的代碼,然後我們可以幫助你卡住的地方,找到有效的代碼。 – Gregor

+0

如果您嘗試對齊兩個不同的圖(這是我從問題中推斷的),請嘗試在此處搜索'rbind_gtable'示例,它將解決對齊問題。 – baptiste

+0

其他可能性是使用'facet_wrap'或許'scales ='free_y''設置。 – drmariod

回答

0

可以手動設置的寬度爲物理單元(在本例中一英寸,對於誇張)

g1 <- ggplotGrob(bp) 
g2 <- ggplotGrob(bp1000) 
g1$widths[3] <- g2$widths[3] <- list(unit(1,"in")) 
grid.newpage() 
grid.arrange(g1, g2) 

enter image description here

+0

謝謝。這正是我的所爲!有沒有關於grob類的不同含義的很好的文檔? – vincisson

+0

不是真的,但看看[這裏](https://github.com/baptiste/gridextra/wiki/arrange-ggplot)和[there](https://github.com/baptiste/gtable/wiki/Description )鬆散相關的gtable東西 – baptiste