2013-05-21 155 views
5

我想在與線條相同的繪圖上繪製多個時間數據直方圖(1周長)。將直方圖繪製爲線條

我有時間的數據:

> dput(head(ts)) 
structure(c(1364421605.227, 1364375025.034, 1364376298.393, 1364375002.928, 
1364393158.084, 1364423268.856), class = c("POSIXct", "POSIXt")) 

,我要繪製它的直方圖。 hist(ts,breaks=7*24)工作正常,但它使用陰謀類型h將遮掩我想要添加的其他直方圖(我知道我可以使用透明顏色 - rainbowalpha=0.5,但我真的很想看到線)。

我試圖

> hist(ts, breaks = 7*24, type="l") 
Warning messages: 
1: In title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...) : 
    graphical parameter "type" is obsolete 
Calls: hist -> hist.POSIXt -> myplot -> plot -> plot.histogram -> title 
2: In axis(2, ...) : graphical parameter "type" is obsolete 
Calls: hist -> hist.POSIXt -> myplot -> axis 
3: In axis(side, at = z, labels = labels, ...) : 
    graphical parameter "type" is obsolete 
Calls: hist -> hist.POSIXt -> myplot -> axis.POSIXct -> axis 

爲什麼hist傳遞typetitle

我可以創建直方圖對象並單獨繪製它:

> h <- hist(ts, breaks=7*24, plot=FALSE) 
> plot(x=h$mids, y=h$density, type="l") 

但隨後的x軸標記有數字(E.D., 「1364421605」)不日期(例如 「03月25日」)。

我想我應該使用axis,但我寧願不處理自己 - 畢竟,hist構造只是我想要的軸!

謝謝!

+0

嗯,好像是'hist'字面上沒有內置做到這一點。如果您查看繪圖方法的代碼,它實際上具有通過調用'rect'硬編碼的矩形。在POSIX方法中,它有一些精心構造你喜歡的軸的代碼。所以你可能不得不復制那個軸的構造(或者可能有一個包裝中的繪圖功能,已經這樣做了,誰知道)。 – joran

+0

此外,您可以在'hist'的幫助頁面中查看未使用的參數傳遞給'title',特別是在'...'部分。 – Justin

+0

如果使用'ggplot'代替它可以將不同的直方圖放在一起(如果你喜歡,可以使用不同的顏色),這樣就可以解決整個問題。見例如http://docs.ggplot2.org/0.9.3/geom_histogram.html – eddi

回答

5

下面看起來很奇怪,因爲你只給了我們六個數據點在你的dput。您可以繪製沒有x軸的線圖,之後添加它,像這樣:

h <- hist(ts, breaks=7*24, plot=FALSE) 
plot(x=h$mids, y=h$density, type="l", xaxt="n") 
axis(1,at=ts,labels=format(ts,"%b-%d")) 

enter image description here

+1

太棒了!除了'axis'應該被稱爲'axis(1,at = h $ breaks,labels = format(as.POSIXct(h $ breaks,origin =「1970-01-01」),「%b%d」)) ' – sds

+0

你也可以通過選擇更少的箱子使它看起來不那麼「怪異」。 – Denise