2014-01-19 85 views
0

大家好,我正在嘗試用R中的lattice圖形解決一個小問題。我使用lattice構建了雙y軸繪圖。它工作真棒。我想補充的代碼和dput版本我的數據(在最後部分的數據幀的xx列表):更改格子圖中的繪圖面板的大小

library(lattice) 
library(latticeExtra) 
#First graph 
#Format 
comma_fomatter <- function (lim, logsc = FALSE, at = NULL, ...) 
{ 
    ans <- yscale.components.default(lim = lim, logsc = logsc, 
            at = at, ...) 
    xx = as.numeric(ans$left$labels$labels) 
    ans$left$labels$labels <- formatC(xx, format="fg",big.mark = ",") 
    ans 
} 
#Plot 
DD=barchart(a1 ~ a5,xx, yscale.components =comma_fomatter) 
#Second graph 
#Format 
percent1 <- function(x, digits = 2, format = "f", ...) 
{ 
    paste(formatC(100 * x, format = format, digits = digits, ...), "%", sep = "") 
} 
percent <- function (lim, logsc = FALSE, at = NULL, ...) 
{ 
    ans <- yscale.components.default(lim = lim, logsc = logsc, 
            at = at, ...) 
    xx = as.numeric(ans$left$labels$labels) 
    ans$left$labels$labels <- percent1(xx) 
    ans 
} 
#Second plot 
D3=xyplot(a3+a4 ~ a5, xx, type = "b",yscale.components=percent) 
#Final graph 
DF=doubleYScale(DD, D3,style1 = 3, style2 = 0, add.ylab2 = FALSE,text = c("a3", "a4","a1"),main="Nuevo Gráfico") 

所有完美的作品,但是當我繪製DF我得到這個: ​​

你怎麼能看到左側的y軸沒有顯示它的值,我認爲這個事實是由於具有所有圖的正方形的大小。我的問題是,如果有什麼方法可以減小這個正方形的大小並在y軸比例尺內顯示完整的值。該dput()版本我的數據幀的名單是下一個:

xx=structure(list(a1 = c(560492.29, 1433973.37, 3016748.66, 4241217.73, 
6251742.27, 6757161.24, 7408081.05, 7899980.33), a2 = 1:8, a3 = c(0, 
0.00793734405263048, 0.0129172080248807, 0.0324335034787285, 
0.0397094648625047, 0.0555107413716237, 0.0521541081141384, 0.0515512600016815 
), a4 = c(0.0142731668976214, 0.010460445301017, 0.0928151568317925, 
0.0707344020275045, 0.0303915279604129, 0.0517968992552855, 0.0202481585970229, 
0.0253165187311296), a5 = structure(1:8, .Label = c("abr 2013", 
"may 2013", "jun 2013", "jul 2013", "ago 2013", "sep 2013", "oct 2013", 
"nov 2013"), class = "factor")), .Names = c("a1", "a2", "a3", 
"a4", "a5")) 

我已經看過在格子圖形的書的任何建議,但我解決不了這個元素。非常感謝您的幫助。

回答

1

不知道爲什麼它不適合你。我冒昧地重新格式化您的代碼,除此之外沒有什麼重要的變化。總之,這裏的情節:

enter image description here

編輯:這個問題似乎與晶格的(見?trellis.par.get)的設置。我相應地更新了源代碼,這應該可以解決問題。

而這裏的源:

library(lattice) 
library(latticeExtra) 

# xx <- ... paste your dataset here 

# Adapt these to your needs: 
parSettings <- list(layout.widths=list(left.padding=5)) 

#First graph 
comma_formatter <- function (lim, logsc = FALSE, at = NULL, ...) { 
    ans <- yscale.components.default(lim = lim, logsc = logsc, at = at, ...) 
    xxPrime <- as.numeric(ans$left$labels$labels) 
    ans$left$labels$labels <- formatC(xxPrime, format = "fg", big.mark = ",") 
    ans 
} 
#Plot 
DD <- barchart(a1 ~ a5, xx, yscale.components = comma_formatter, par.settings = parSettings) 

#Second graph 
percent <- function (lim, logsc = FALSE, at = NULL, ...) { 
    # Helper function (never needed elsewhere, so we can declare it here) 
    percent1 <- function(x, digits = 2, format = "f", ...) 
    paste(formatC(100 * x, format = format, digits = digits, ...), "%", sep = "") 

    ans <- yscale.components.default(lim = lim, logsc = logsc, at = at, ...) 
    xxPrime <- as.numeric(ans$left$labels$labels) 
    ans$left$labels$labels <- percent1(xxPrime) 
    ans 
} 
#Plot 
D3 <- xyplot(a3+a4 ~ a5, xx, type = "b", yscale.components = percent, par.settings = parSettings) 

#Final graph 
DF <- doubleYScale(DD, D3, style1 = 3, style2 = 0, add.ylab2 = FALSE, 
        text = c("a3", "a4", "a1"), main = "Nuevo Gráfico") 
plot(DF) 
+0

謝謝@fotNelton但我得到了同樣的問題,也許你知道什麼是你的窗口的配置,我與RStudio和R 2.15在Windows 7中工作,我得到這個問題也許有關於此的一些建議 – Duck

+0

很抱歉聽到。我在OS X上使用了RStudio和R 3.0.2,但我認爲操作系統並不重要。如果你從一個新的工作區開始,只輸入上面的內容(包括你的數據集),這可能會有幫助嗎?這就是我會嘗試的。 – fotNelton

+0

我試過這個,給我同樣的結果,可能對我來說任何par.setting問題@fotNelton – Duck