2013-04-16 30 views
1

我想在x ax上生成帶有不同時間格式標籤的ggplot2圖表列表。然而格式參數沒有按照ggplot的預期進行考慮。 這是可以重現問題的最小代碼。R ggplot2具有不同時間格式的情節列表 - 是一個錯誤?

x<-as.POSIXct(strptime(c("2013-01-01 00:00:00","2013-01-02 00:00:00"),format="%Y-%m-%d %H:%M:%S")) 
y1<-c(0,1) 
y2<-c(0,-1) 
df<-data.frame(x=x,y1=y1,y2=y2) 
f<-function(a,b){ggplot(df,aes_string(x="x",y=b))+geom_line()+ scale_x_datetime(labels= date_format(a))} 
r<-mapply(f,c("%b-%d","%H:%M"),c("y1","y2"),SIMPLIFY=FALSE) 

r[2]給出了預期的情節(抱歉,我不能張貼圖片),但r[1]軸格式不正確(而要繪製的數據被正確地考慮到)。

有什麼建議嗎?

回答

1

ggplot環境和mapply和承諾的評價之間,a沒有被適當的評價,你可以避開這個由force功能

f<-function(a,b){ 
    a <- force(a) 
    ggplot(df,aes_string(x="x",y=b))+geom_line()+ scale_x_datetime(labels= date_format(a)) 
} 
r <- mapply(f,c("%b-%d","%H:%M"),c("y1","y2"), SIMPLIFY = FALSE) 

r[1] 

enter image description here

r[2] 
內荷蘭國際集團它

enter image description here

Explain a lazy evaluation quirk更詳細地解釋了懶惰的評估。

+0

這很有效!非常感謝!你認爲這應該被認爲是ggplot錯誤嗎? – user2147028

+0

@ user2147028 - 這不是一個錯誤,更多的是懶惰評估的怪癖和方式和應用程序 – mnel

+0

謝謝。我現在很清楚這一點。 – user2147028