我想用ggplot繪製一個圖來比較兩個變量的絕對值,並且還顯示它們之間的比率。由於比例是無單位的,並且數值不是,所以我不能在同一個y軸上顯示它們,所以我想垂直堆疊爲兩個帶有對齊x軸的獨立圖形。對齊多個ggplot圖有無圖例
這裏是我到目前爲止有:
library(ggplot2)
library(dplyr)
library(gridExtra)
# Prepare some sample data.
results <- data.frame(index=(1:20))
results$control <- 50 * results$index
results$value <- results$index * 50 + 2.5*results$index^2 - results$index^3/8
results$ratio <- results$value/results$control
# Plot absolute values
plot_values <- ggplot(results, aes(x=index)) +
geom_point(aes(y=value, color="value")) +
geom_point(aes(y=control, color="control"))
# Plot ratios between values
plot_ratios <- ggplot(results, aes(x=index, y=ratio)) +
geom_point()
# Arrange the two plots above each other
grid.arrange(plot_values, plot_ratios, ncol=1, nrow=2)
最大的問題是,在第一條曲線右側的傳說使得它不同的大小。一個小問題是,我寧願不在頂部圖上顯示X軸名稱和刻度標記,以避免混亂,並明確表示它們共享同一個軸。
我看這個問題,它的答案:
不幸的是,答案也很適合我。刻面看起來不太合適,因爲我想爲我的兩個圖表製作完全不同的y刻度。操縱ggplot_gtable返回的維度似乎更有希望,但我不知道如何解決兩個圖形具有不同數量的單元格這一事實。天真地複製該代碼似乎並沒有改變我的情況下生成的圖形尺寸。
這裏還有一個類似的問題:
The perils of aligning plots in ggplot
這個問題本身似乎暗示一個不錯的選擇,但rbind.gtable抱怨,如果表中有列數不同,在這裏的話,由於傳說。也許有一種方法可以在第二個表中插入額外的空列?或者一種方法來抑制第一個圖中的圖例,然後將其重新添加到組合圖中?
我會使用rbind_gtable的方法,但正如你所說的,你需要讓gtables具有相同數量的cols。它[雖然很容易](http://stackoverflow.com/questions/21529926/arrange-ggplots-together-in-custom-ratios-and-spacing/21531303#21531303),與gtable_add_cols – baptiste 2014-10-02 11:29:13
[也見這一個]( http://stackoverflow.com/questions/25893673/how-to-arrange-plots-with-shared-axes/25923349#25923349) – baptiste 2014-10-02 12:00:39
爲什麼不創建一個多面情節時刪除facet-titles?以我的答案爲例。 – Jaap 2014-10-02 20:53:53