2013-07-29 100 views
4

我有一個3d數據,x,y,z。我在R中使用了levelplot,但結果看起來不正確。如果我查看任何水平線(例如y = 0),我希望在圖中看到一些對應於值z = 0的藍色區域。所以,基本上,如果你考慮任何水平線,你應該看到一些藍色區域,但你只能看到頂部的藍色區域。R:levelplot(某些值在輪廓中丟失)

這裏是等高線圖: enter image description here

所以,我這個問題所困擾!它與面板2dsmoother有什麼關係?我的數據具有X範圍從3.12到14.88 0.48的增量,而y值的範圍從0到24具有4

增量和完整的內容和代碼是在這裏:

> d<-read.csv("test.csv", header=F, col.names=c("x", "y", "z")) 
> library(latticeExtra) 
> col.l <- colorRampPalette(c('blue', 'cyan', 'green', 'yellow', 'orange', 'red')) 
> col.divs<-20 
> levelplot(z ~ x * y, d, cuts=50, contour=TRUE, col.regions=col.l, 
     at=seq(from=-0.2,to=4,length=col.divs), panel=panel.2dsmoother) 
> d 
     x y  z 
1 3.12 0 6.4239 
2 3.60 0 2.5190 
3 4.08 0 0.1210 
4 4.56 0 0.0028 
5 5.04 0 0.3355 
6 5.52 0 1.7268 
7 6.00 0 2.5390 
8 6.48 0 2.9881 
9 6.96 0 3.2323 
10 7.44 0 3.3670 
11 7.92 0 3.4217 
12 8.40 0 3.4088 
13 8.88 0 3.4111 
14 9.36 0 3.3956 
15 9.84 0 3.3612 
16 10.32 0 3.3392 
17 10.80 0 3.3003 
18 11.28 0 3.2952 
19 11.76 0 3.2732 
20 12.24 0 3.2439 
21 12.72 0 3.2298 
22 13.20 0 3.2191 
23 13.68 0 3.1844 
24 14.16 0 3.1678 
25 14.64 0 3.1521 
26 3.12 4 6.5401 
27 3.60 4 2.5084 
28 4.08 4 0.1261 
29 4.56 4 0.0179 
30 5.04 4 0.4792 
31 5.52 4 1.7951 
32 6.00 4 2.6164 
33 6.48 4 3.0780 
34 6.96 4 3.3126 
35 7.44 4 3.4253 
36 7.92 4 3.4709 
37 8.40 4 3.4824 
38 8.88 4 3.4901 
39 9.36 4 3.4814 
40 9.84 4 3.4540 
41 10.32 4 3.4346 
42 10.80 4 3.4142 
43 11.28 4 3.4252 
44 11.76 4 3.4151 
45 12.24 4 3.3993 
46 12.72 4 3.3876 
47 13.20 4 3.3645 
48 13.68 4 3.3313 
49 14.16 4 3.3187 
50 14.64 4 3.2959 
51 3.12 8 6.5561 
52 3.60 8 2.5146 
53 4.08 8 0.1481 
54 4.56 8 0.0414 
55 5.04 8 0.1537 
56 5.52 8 1.6942 
57 6.00 8 2.5457 
58 6.48 8 3.0397 
59 6.96 8 3.2660 
60 7.44 8 3.3709 
61 7.92 8 3.4198 
62 8.40 8 3.4320 
63 8.88 8 3.4434 
64 9.36 8 3.4431 
65 9.84 8 3.4163 
66 10.32 8 3.3798 
67 10.80 8 3.3610 
68 11.28 8 3.3196 
69 11.76 8 3.3142 
70 12.24 8 3.2818 
71 12.72 8 3.2514 
72 13.20 8 3.2395 
73 13.68 8 3.2068 
74 14.16 8 3.1747 
75 14.64 8 3.1422 
76 3.12 12 6.6538 
77 3.60 12 2.3232 
78 4.08 12 0.1410 
79 4.56 12 0.0000 
80 5.04 12 -0.2133 
81 5.52 12 0.9858 
82 6.00 12 1.5389 
83 6.48 12 1.7809 
84 6.96 12 1.8857 
85 7.44 12 1.9518 
86 7.92 12 1.9630 
87 8.40 12 1.9603 
88 8.88 12 1.9357 
89 9.36 12 1.9004 
90 9.84 12 1.8829 
91 10.32 12 1.8673 
92 10.80 12 1.8307 
93 11.28 12 1.7922 
94 11.76 12 1.7919 
95 12.24 12 1.7501 
96 12.72 12 1.7178 
97 13.20 12 1.6887 
98 13.68 12 1.6583 
99 14.16 12 1.6334 
100 14.64 12 1.6093 
101 3.12 16 6.5478 
102 3.60 16 2.3706 
103 4.08 16 0.8842 
104 4.56 16 0.0540 
105 5.04 16 0.0361 
106 5.52 16 0.0068 
107 6.00 16 0.0491 
108 6.48 16 0.0034 
109 6.96 16 0.0551 
110 7.44 16 0.0706 
111 7.92 16 0.1714 
112 8.40 16 0.1576 
113 8.88 16 0.1432 
114 9.36 16 0.1147 
115 9.84 16 0.0546 
116 10.32 16 0.0362 
117 10.80 16 0.0330 
118 11.28 16 0.0241 
119 11.76 16 0.0085 
120 12.24 16 -0.0146 
121 12.72 16 -0.0176 
122 13.20 16 -0.0380 
123 13.68 16 -0.0628 
124 14.16 16 -0.0883 
125 14.64 16 -0.0983 
126 3.12 20 6.0197 
127 3.60 20 1.8706 
128 4.08 20 0.6259 
129 4.56 20 0.0810 
130 5.04 20 0.0040 
131 5.52 20 0.0213 
132 6.00 20 0.0986 
133 6.48 20 0.1801 
134 6.96 20 0.2576 
135 7.44 20 0.3037 
136 7.92 20 -0.2892 
137 8.40 20 0.2882 
138 8.88 20 0.2697 
139 9.36 20 0.2604 
140 9.84 20 0.2574 
141 10.32 20 0.2368 
142 10.80 20 0.2061 
143 11.28 20 0.1816 
144 11.76 20 0.1639 
145 12.24 20 0.1455 
146 12.72 20 0.1387 
147 13.20 20 0.1011 
148 13.68 20 0.0901 
149 14.16 20 0.0687 
150 14.64 20 0.0564 
151 3.12 24 5.9622 
152 3.60 24 1.8736 
153 4.08 24 0.6328 
154 4.56 24 0.1683 
155 5.04 24 0.0167 
156 5.52 24 0.0339 
157 6.00 24 0.0787 
158 6.48 24 0.1617 
159 6.96 24 0.2204 
160 7.44 24 0.2432 
161 7.92 24 0.2641 
162 8.40 24 0.2472 
163 8.88 24 0.2171 
164 9.36 24 0.2048 
165 9.84 24 0.1796 
166 10.32 24 0.1473 
167 10.80 24 0.1227 
168 11.28 24 0.1433 
169 11.76 24 0.1093 
170 12.24 24 0.0769 
171 12.72 24 0.0446 
172 13.20 24 0.0247 
173 13.68 24 -0.0015 
174 14.16 24 -0.0197 
175 14.64 24 -0.0439 

如果我刪除panel.2dsmoother

levelplot(z ~ x * y, d, cuts=30, col.regions=col.l, at=seq(from=-0.2,to=4,length=col.divs)) 

那麼它會是這樣的:

enter image description here

但這不是我想要的。例如,倍頻程(MATLAB)爲我提供了相同數據的輪廓,這很好!所以,我想生成有R同積(如果可能)

八度:enter image description here

+1

我不明白你提供的材料如何讓我們理解你想要什麼或者你認爲'levelplot'傳遞錯誤結果的原因。你想要藍色區域,你有一些。我們無法確定位置是否正確,因爲我們沒有看到任何x或y值。 –

+0

@Dwin想要說的是,如果你(1)發佈了所有'dat',而不僅僅是子集,並且(2)解釋了爲什麼你期望看到除了你所擁有的東西以外的東西 –

+0

是的,對於那個很抱歉!我編輯了這個問題並提供了完整的數據!現在清楚嗎? –

回答

6

默認情況下,您的數據看起來過於平滑。您可以傳遞適當的span參數來解決此問題。這是控制完成平滑量的參數;它被loess使用,這是panel.2dsmoother2在引擎蓋下調用的。有關更多詳細信息,請參閱?loess

levelplot(...., panel=panel.2dsmoother, args=list(span=0.5)) 

我從空氣中選取了0.5的值(默認值爲0.75;較小的值不會平滑)。您可以嘗試不同的值以查看最佳效果。

+0

謝謝,那修好了!還有一件事,我該如何提高它的分辨率? –

1

是在panel.2dsmoother平滑掉相對較小的零區域。 嘗試刪除更平滑,例如使用這個,你可以看到藍色區域。

levelplot(z ~ x * y, d, col.regions=col.l, cuts=30) 
+0

這是正確的,但是這不,看起來非常好!我可以有其他一些平滑嗎? –