我想在1x3佈局中繪製三張圖。只有第一個圖需要有垂直軸標籤,但我希望所有三個繪圖區的大小完全相同。如果沒有或全部圖表都有軸標籤,這將是沒有問題的。但是,如果一個軸標籤和另外兩個沒有標籤,我怎樣才能得到所有三張相同的圖形?我試圖在基本圖形中執行此操作,因爲這是我最瞭解的,但如果它們提供更好的方法來解決我的問題,我很樂意使用grid或ggplot2。如何創建多個圖,每個圖都具有相同的繪圖區大小,只有一個繪圖具有軸標籤時?
下面是一些假的數據,我的繪圖代碼,情節本身:
# Fake Data
data = structure(list(y1 = 1:5, y2 = c(1.2, 2.4, 3.6, 4.8, 6), y3 = c(1.44,
2.88, 4.32, 5.76, 7.2)), .Names = c("y1", "y2", "y3"),
row.names = c("I needed 12 units for financial aid",
"I couldn't find any other open classes",
"I might be adding a major or minor",
"The class seemed interesting", "The class fit into my schedule"
), class = "data.frame")
# Plotting code
par(mar=c(5,15,4,1))
par(mfrow=c(1,3))
barplot(data$y1,names.arg=row.names(data), horiz=TRUE,las=1, +
xlim=c(0,8), main="Group 1")
par(mar=c(5,1,4,1))
barplot(data$y2,names.arg=row.names(data), horiz=TRUE,las=1, +
axisnames=FALSE, xlim=c(0,8), main="Group 2")
barplot(data$y3,names.arg=row.names(data), horiz=TRUE,las=1, +
axisnames=FALSE, xlim=c(0,8), main="Group 3")
# Reset plot options back to defaults
par(mfrow=c(1,1)
par(mar=c(5,4,4,2)+0.1)
[更新:我選擇最直接地回答我的問題,這是在基礎圖形的答案,但我建議在其他的解決方案看爲好,因爲他們展示如何做同樣的事情在lattice
和ggplot2
]
更改'oma'設置似乎是「重置」繪圖區域。例如,如果我用'oma = c(0,15,0,0)'創建第一個繪圖,然後調用'par(oma = c(0,0,0,0))',然後調用plot(。 ..)',我結束了兩個獨立的情節,而不是在同一個「頁面」上的兩個情節。有沒有辦法告訴R在第一個情節之後保留相同的1x3繪圖區域,即使我稱之爲「oma」? – eipi10
@ eipi10你應該只設置一次'oma'參數,不要在各個幀之間改變它。 –
工作,謝謝。出於好奇,爲什麼你不必在繪製第一個繪圖之後將'oma'重置回c(0,0,0,0)?另外,爲了將來的參考,在某些情況下,人們想要在圖之間改變圖形參數,是否有辦法阻止R重新設置繪圖區? – eipi10