我有一個多變量時間序列是一些變量有相當大的範圍。我希望做一個單頁面圖,每個變量有多個堆積圖,其中一些變量具有log10的y軸縮放比例。我對於晶格相對來說比較陌生,一直未能弄清楚如何有效地將log10縮放比例與非轉換軸混合並獲得出版質量圖。如果使用print.trellis,則繪圖不會對齊,並且填充需要一些工作,如果使用c.trellis,則佈局很好,但僅使用僅來自一個繪圖的y縮放。任何關於高效解決方案的建議,我可以使用每個(原始)對象的不同y縮放來複制c.trellis的輸出?下面 例子:lattice或latticeExtra結合多個陰謀不同的yscaling(log10和非轉換)
require(lattice)
require(latticeExtra)
# make data.frame
d.date <- as.POSIXct(c("2009-12-15", "2010-01-15", "2010-02-15", "2010-03-15", "2010-04-15"))
CO2dat <- c(100,200,1000,9000,2000)
pHdat <- c(10,9,7,6,7)
tmp <- data.frame(date=d.date ,CO2dat=CO2dat ,pHdat=pHdat)
# make plots
plot1 <- xyplot(pHdat ~ date, data=tmp
, ylim=c(5,11)
, ylab="pHdat"
, xlab="Date"
, origin = 0, border = 0
, scales=list(y=list(alternating=1))
, panel = function(...){
panel.xyarea(...)
panel.xyplot(...)
}
)
# make plot with log y scale
plot2 <- xyplot(CO2dat ~ date, data=tmp
, ylim=c(10,10^4)
, ylab="CO2dat"
, xlab="Date"
, origin = 0, border = 0
, scales=list(y=list(alternating=1,log=10))
, yscale.components = yscale.components.log10ticks
, panel = function(...){
panel.xyarea(...)
panel.xyplot(...)
# plot CO2air uatm
panel.abline(h=log10(390),col="blue",type="l",...)
}
)
# plot individual figures using split
print(plot2, split=c(1,1,1,2), more=TRUE)
print(plot1, split=c(1,2,1,2), more=F)
# combine plots (more convenient)
comb <- c(plot1, plot2, x.same=F, y.same=F, layout = c(1, 2))
# plot combined figure
update(comb, ylab = c("pHdat","log10 CO2dat"))
您是否嘗試過與領先的空白(爲'print.trellis'法)填充在plot1 y軸刻度標籤,或者你在找比這更少的臨時解決方案? – joran 2012-02-27 18:58:27
嗨@joran:看看我下面的想法。 – Aaron 2012-02-28 21:29:58