2017-05-27 60 views
0

我在生成兩條曲線疊加的簡單繪圖時遇到了困難。我在x軸變量表示星期,因此想保持它下令在數據幀figU5MR訂購一個變量用於生成一個簡單的繪圖

figU5MR 
    Week U5MR CMR fWeek cWeek 
1 51 0.9 0.2 51 51 
2 52 0.2 0.2 52 52 
3 53 0.0 0.0 53 53 
4  1 0.0 0.0  1  1 
5  2 0.5 0.1  2  2 
6  3 0.2 0.0  3  3 
7  4 0.6 0.2  4  4 
8  5 0.2 0.2  5  5 
9  6 0.2 0.1  6  6 
10 7 0.2 0.0  7  7 
11 8 0.1 0.0  8  8 
12 9 0.1 0.0  9  9 
13 10 0.0 0.1 10 10 
14 11 0.0 0.0 11 11 
15 12 0.1 0.1 12 12 
16 13 0.0 0.0 13 13 
17 14 0.2 0.1 14 14 
18 15 0.1 0.0 15 15 
19 16 0.3 0.1 16 16 
20 17 0.3 0.1 17 17 
21 18 0.1 0.1 18 18 
22 19 0.3 0.1 19 19 
23 20 0.1 0.0 20 20 

要做到這一點我已經首先創建一個有序的因素fWeek。要繪製的數據,我只是用這似乎基本如下:

plot(x=fWeek, y=U5MR, pch=24, cex=2,type="b", xlab="Weeks", xlim=c(-0.02,1.2), ylab="Death/10'000/day", main="Mortality rates per week", axes=F) 

plot(x=fWeek,y=CMR,pch=19, cex=1.8,lty=1,type="o", gap=0, sfrac=0.005, axes=T, add=TRUE) 

返回的情節不顯示如預期的符號:enter image description here

爲了規避這個我也試着變換Week爲字符cWeek:那麼輸出是更好的,但我失去了我周的正確順序... weeks 51 to 53 appear at the complete end of the graph

有沒有人有一個關於如何得到我周的正確順序的想法(如圖1中,同時保持符號漂亮的外觀如圖2所示?對不起,我知道這是b asic,但我不能得到我想要的東西,搜索幾小時後.. 謝謝!

回答

2

打印的輸出讓我覺得有一個你已經附加的數據框。附加數據框是一個糟糕的想法。相反,學會使用with,他們允許你抓住數字化的rownames(假設你還沒有把字符值放在那裏)。也可以使用1:nrow(dfrm)得到傳遞給y數字序列:

with(dfrm, plot(x=as.numeric(rownames(dfrm)), y=U5MR, pch=24, cex=2,type="b", 
    xlab="Weeks", ylab="Death/10'000/day", main="Mortality rates per week", 
    xaxt="n")) 

添加回軸線:

axis(1, at=as.numeric(rownames(dfrm)), labels=dfrm$Week) 

..並離開了XLIM。這對我來說沒有任何意義(對我來說)enter image description here

+0

呃注意到,這是很大的幫助,我不會忘記。非常感謝你提供這樣一個非常性感的問題的明確答案......這一切都很有用! – den