簡體   English   中英

如何為格子中的輪廓圖添加顏色?

[英]How do I add color to a contourplot in lattice?

我正在嘗試繪制看起來像這樣的輪廓圖(或水平圖,我不太在意哪一個):

在此處輸入圖片說明

我有以下代碼:

contourplot(z~x*y, data=df1, xlim=c(0,100), ylim=c(0,50),
            scales=list(x=list(at=c(0,20,40,60,80,100)),
                        y=list(at=c(0,10,20,30,40,50))),
            at=seq(0,5000,by=500))

效果很好,但是當我嘗試添加如下顏色時:

contourplot(z~x*y, data=df1, xlim=c(0,100), ylim=c(0,50),
            scales=list(x=list(at=c(0,20,40,60,80,100)),
                        y=list(at=c(0,10,20,30,40,50))),
            at=seq(0,5000,by=500), region=T,
            colorkey=list(at=seq(0,5000,by=10)), col.regions=rainbow(5000))

我得到這個可怕的結果:

在此處輸入圖片說明

我認為問題主要是規模問題,但無論我嘗試at哪個或col.regions哪個值at我都無法改變結果。 我什至嘗試了interpolate選項,但確實沒有什么不同。 我進行了很多搜索,但我不得不說我發現晶格的文檔有些混亂。

data.frame是這樣的:

structure(list(x = c(99.9735523336143, 99.9735523336143, 99.9735523336143, 
9.99735523336143, 99.9735523336143, 99.9735523336143, 99.9735523336143, 
99.9735523336143, 9.99735523336143, 99.9735523336143, 9.99735523336143, 
9.99735523336143, 9.99735523336143, 9.99735523336143, 9.99735523336143, 
9.99735523336143, 19.9947104667229, 19.9947104667229, 19.9947104667229, 
19.9947104667229, 19.9947104667229, 19.9947104667229, 19.9947104667229, 
19.9947104667229, 29.9920657000843, 29.9920657000843, 29.9920657000843, 
29.9920657000843, 29.9920657000843, 29.9920657000843, 29.9920657000843, 
29.9920657000843, 39.9103904572927, 39.9103904572927, 39.9103904572927, 
39.9103904572927, 39.9103904572927, 39.9103904572927, 39.9103904572927, 
39.9103904572927, 49.9867761668072, 49.9867761668072, 49.9867761668072, 
4.99867761668072, 49.9867761668072, 49.9867761668072, 49.9867761668072, 
49.9867761668072, 4.99867761668072, 49.9867761668072, 4.99867761668072, 
4.99867761668072, 4.99867761668072, 4.99867761668072, 4.99867761668072, 
4.99867761668072, 60.0631618763217, 60.0631618763217, 60.0631618763217, 
60.0631618763217, 60.0631618763217, 60.0631618763217, 60.0631618763217, 
60.0631618763217, 69.9419713954535, 69.9419713954535, 69.9419713954535, 
69.9419713954535, 69.9419713954535, 69.9419713954535, 69.9419713954535, 
69.9419713954535, 79.8207809145854, 79.8207809145854, 79.8207809145854, 
79.8207809145854, 79.8207809145854, 79.8207809145854, 79.8207809145854, 
79.8207809145854, 90.0947428144825, 90.0947428144825, 90.0947428144825, 
90.0947428144825, 90.0947428144825, 90.0947428144825, 90.0947428144825, 
90.0947428144825), y = c(0.0999735523336143, 0.499867761668072, 
9.99735523336143, 0.0999735523336143, 0.999735523336143, 19.9947104667229, 
1.99947104667229, 49.9867761668072, 0.499867761668072, 4.99867761668072, 
9.99735523336143, 0.999735523336143, 19.9947104667229, 1.99947104667229, 
49.9867761668072, 4.99867761668072, 0.0999735523336143, 0.499867761668072, 
9.99735523336143, 0.999735523336143, 19.9947104667229, 1.99947104667229, 
49.9867761668072, 4.99867761668072, 0.0999735523336143, 0.499867761668072, 
9.99735523336143, 0.999735523336143, 19.9947104667229, 1.99947104667229, 
49.9867761668072, 4.99867761668072, 0.0999735523336143, 0.499867761668072, 
9.99735523336143, 0.999735523336143, 19.9947104667229, 1.99947104667229, 
49.9867761668072, 4.99867761668072, 0.0999735523336143, 0.499867761668072, 
9.99735523336143, 0.0999735523336143, 0.999735523336143, 19.9947104667229, 
1.99947104667229, 49.9867761668072, 0.499867761668072, 4.99867761668072, 
9.99735523336143, 0.999735523336143, 19.9947104667229, 1.99947104667229, 
49.9867761668072, 4.99867761668072, 0.0999735523336143, 0.499867761668072, 
9.99735523336143, 0.999735523336143, 19.9947104667229, 1.99947104667229, 
49.9867761668072, 4.99867761668072, 0.0999735523336143, 0.499867761668072, 
9.99735523336143, 0.999735523336143, 19.9947104667229, 1.99947104667229, 
49.9867761668072, 4.99867761668072, 0.0999735523336143, 0.499867761668072, 
9.99735523336143, 0.999735523336143, 19.9947104667229, 1.99947104667229, 
49.9867761668072, 4.99867761668072, 0.0999735523336143, 0.499867761668072, 
9.99735523336143, 0.999735523336143, 19.9947104667229, 1.99947104667229, 
49.9867761668072, 4.99867761668072), z = c(7.70262939725884, 
72.4762038498177, 1897.66010932237, 1.58054830233696, 165.070646557113, 
3792.42153530273, 356.278306229365, 9223.47853672023, 14.2758673767137, 
935.839000278543, 341.884101039707, 31.701193606272, 665.004073393329, 
66.9391931173054, 1509.15007815714, 171.754281181158, 2.89064204660586, 
26.2635839730677, 636.27993673818, 58.5156364281774, 1243.02434222159, 
123.885961157754, 2852.46703855471, 318.792649405134, 3.97493187787477, 
36.3111148789109, 889.55438527022, 81.1632049285379, 1744.63858516148, 
172.284250494152, 4044.24262993302, 444.58461882461, 4.86420556288387, 
44.6549593184585, 1105.67331471408, 100.121759918144, 2176.12813241023, 
213.072583938431, 5090.54862806588, 551.33727936112, 5.608738003459, 
51.7306506719939, 1294.26413375778, 0.827199861040891, 116.33438144459, 
2555.52749317869, 248.208540590425, 6028.1869116069, 7.44790194067698, 
643.985400190343, 177.310068151686, 16.5109365887457, 344.080667093976, 
34.8178598080871, 776.206332364582, 89.2039775124962, 6.21939893932657, 
57.6140181031486, 1455.92520463951, 129.934909189257, 2883.12188866332, 
277.918147781392, 6852.31788369484, 722.963381835502, 6.70936909598539, 
62.4057616449996, 1591.87930397262, 141.11465788703, 3160.532277617, 
302.546915494946, 7561.72493964819, 789.007565625702, 7.10911809960051, 
66.3821496606545, 1708.59117356901, 150.482643243694, 3400.26770836962, 
323.370848584576, 8184.13138429934, 845.374097718433, 7.44465742618642, 
69.7893126020086, 1812.39459545251, 158.596014882138, 3614.91792337778, 
341.585243605719, 8749.51748025968, 895.192251986793)), .Names = c("x", 
"y", "z"), row.names = c(NA, -88L), class = "data.frame")

從gridExtra包中添加panel.2dsmoother將為您(相對)提供平滑的顏色。 雖然如果仔細觀察,邊緣仍然有些鋸齒:

contourplot(z~x*y, data=df1, xlim=c(0,100), ylim=c(0,50),
            scales=list(x=list(at=c(0,20,40,60,80,100)),
                        y=list(at=c(0,10,20,30,40,50))),
            at=seq(0,5000,by=500), region=T,
            colorkey=list(at=seq(0,5000,by=10)), 
            col.regions=rainbow(5000),
            panel = latticeExtra::panel.2dsmoother)

等高線圖

如果您不限於使用lattice軟件包中的選項, filled.contour grpahics軟件包中的filled.contour看起來會很不錯。 您需要進行一些數據整理:

df2 <- tidyr::spread(df1, y, z)
df.x <- df2$x
df.y <- as.numeric(colnames(df2)[-1])
df.z <- as.matrix(df2[,-1])

filled.contour(df.x, df.y, df.z,
               nlevels = 10,
               col = rainbow(10),
               plot.axes = {
                 axis(1)
                 axis(2)
                 contour(df.x, df.y, df.z, add = T)}
               )

filled.contour

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM