2013-03-11 89 views
1

我試圖使用R中的線框函數來繪製曲面,以顯示一個變量如何響應其他兩個變量的變化而變化。 即我有一個3x355矩陣的優化函數輸出,有三列以「r」「k」和「sigma」開頭。我想生成一個線框圖,顯示sigma如何隨着r和k而變化。 但是我遇到了使用wireframe命令的麻煩,因爲它會一直生成一個沒有任何內容的空框。在R中使用線框圖

我想使用的代碼如下所示:(對於「日誌」矩陣)

logsgrid<-expand.grid(logs[,"sigma"]=logs[,"sigma],logs[,"r"],logs[,"k"]) 

wireframe(logs["sigma"]~logs["r"]*logs["k"],data=logsgrid) 

任何幫助將不勝感激!

我的數據是這樣的:

> logs 
       r   k  sigma 
    [1,] 0.3911590 254.49893 0.5159761 
    [2,] 0.3911162 254.50250 0.5159893 
    [3,] 0.3910748 254.54044 0.5159333 
    [4,] 0.3910345 254.55662 0.5159562 
    [5,] 0.3911328 254.48039 0.5160731 
    [6,] 0.3910237 254.53855 0.5162077 
    [7,] 0.3912773 254.50953 0.5161592 
    [8,] 0.3909318 254.64676 0.5164667 
    [9,] 0.3865343 258.65899 0.5215749 
[10,] 0.3902477 255.63565 0.5141283 
[11,] 1.8565417 12.88117 4.0498523 
[12,] -0.2392318 16.68176 4.6337449 
[13,] -0.4814815 15.55185 20.8000000 
[14,] -2.2814815 18.25185 22.4000000 
[15,] -2.4444444 19.55556 24.0000000 
[16,] -2.6074074 20.85926 25.6000000 
[17,] -2.7703704 22.16296 27.2000000 
[18,] -2.9333333 23.46667 28.8000000 
[19,] -3.0962963 24.77037 30.4000000 
[20,] -3.2592593 26.07407 32.0000000 
[21,] -3.4222222 27.37778 33.6000000 
[22,] -3.5851852 28.68148 35.2000000 
[23,] -3.7481481 29.98519 36.8000000 
[24,] -3.9111111 31.28889 38.4000000 
[25,] -4.0740741 32.59259 40.0000000 
[26,] -4.2370370 33.89630 41.6000000 
[27,] 2.4000000 32.10000 44.1000000 
[28,] 2.4888889 33.28889 45.7333333 
[29,] 2.5777778 34.47778 47.3666667 
[30,] 2.6666667 35.66667 49.0000000 
[31,] 2.7555556 36.85556 50.6333333 
[32,] 2.8444444 38.04444 52.2666667 
[33,] 2.9333333 39.23333 53.9000000 
[34,] 3.0222222 40.42222 55.5333333 
[35,] 3.1111111 41.61111 57.1666667 
[36,] 3.2000000 42.80000 58.8000000 
[37,] 3.2888889 43.98889 60.4333333 
[38,] 3.3777778 45.17778 62.0666667 
[39,] 3.4666667 46.36667 63.7000000 
[40,] 3.5555556 47.55556 65.3333333 
[41,] 3.6444444 48.74444 66.9666667 
[42,] -11.2000000 51.80000 79.8000000 
[43,] -11.4666667 53.03333 81.7000000 
[44,] -11.7333333 54.26667 83.6000000 
[45,] -12.0000000 55.50000 85.5000000 
[46,] 15.3333333 52.13333 62.8666667 
[47,] 15.6666667 53.26667 64.2333333 
[48,] 16.0000000 54.40000 65.6000000 
[49,] 16.3333333 55.53333 66.9666667 
[50,] 16.6666667 56.66667 68.3333333 
[51,] 17.0000000 57.80000 69.7000000 
[52,] 17.3333333 58.93333 71.0666667 
[53,] 17.6666667 60.06667 72.4333333 
[54,] 18.0000000 61.20000 73.8000000 
[55,] 18.3333333 62.33333 75.1666667 
[56,] 18.6666667 63.46667 76.5333333 
[57,] 19.0000000 64.60000 77.9000000 
[58,] 19.3333333 65.73333 79.2666667 
[59,] 19.6666667 66.86667 80.6333333 
[60,] 20.0000000 68.00000 82.0000000 
[61,] 20.3333333 69.13333 83.3666667 
[62,] 20.6666667 70.26667 84.7333333 
[63,] 21.0000000 71.40000 86.1000000 
[64,] 21.3333333 72.53333 87.4666667 
[65,] 21.6666667 73.66667 88.8333333 
[66,] 22.0000000 74.80000 90.2000000 
[67,] 22.3333333 75.93333 91.5666667 
[68,] 22.6666667 77.06667 92.9333333 
[69,] 23.0000000 78.20000 94.3000000 
[70,] 23.3333333 79.33333 95.6666667 
[71,] 23.6666667 80.46667 97.0333333 
[72,] 24.0000000 81.60000 98.4000000 
[73,] 24.3333333 82.73333 99.7666667 
[74,] 24.6666667 83.86667 101.1333333 
[75,] 25.0000000 85.00000 102.5000000 
[76,] 25.3333333 86.13333 103.8666667 
[77,] 25.6666667 87.26667 105.2333333 
[78,] 26.0000000 88.40000 106.6000000 
[79,] 26.3333333 89.53333 107.9666667 
[80,] 26.6666667 90.66667 109.3333333 
[81,] 27.0000000 91.80000 110.7000000 
[82,] 27.3333333 92.93333 112.0666667 
[83,] 27.6666667 94.06667 113.4333333 
[84,] 28.0000000 95.20000 114.8000000 
[85,] 28.3333333 96.33333 116.1666667 
[86,] 28.6666667 97.46667 117.5333333 
[87,] 29.0000000 98.60000 118.9000000 
[88,] 29.3333333 99.73333 120.2666667 
[89,] 29.6666667 100.86667 121.6333333 
[90,] 30.0000000 102.00000 123.0000000 
[91,] 30.3333333 103.13333 124.3666667 
[92,] 30.6666667 104.26667 125.7333333 
[93,] 31.0000000 105.40000 127.1000000 
[94,] 31.3333333 106.53333 128.4666667 
[95,] 31.6666667 107.66667 129.8333333 
[96,] 32.0000000 108.80000 131.2000000 
[97,] 32.3333333 109.93333 132.5666667 
[98,] 32.6666667 111.06667 133.9333333 
[99,] 33.0000000 112.20000 135.3000000 
[100,] 33.3333333 113.33333 136.6666667 
[101,] 33.6666667 114.46667 138.0333333 
[102,] 34.0000000 115.60000 139.4000000 
[103,] 34.3333333 116.73333 140.7666667 
[104,] 34.6666667 117.86667 142.1333333 
[105,] 35.0000000 119.00000 143.5000000 
[106,] 35.3333333 120.13333 144.8666667 
[107,] 35.6666667 121.26667 146.2333333 
[108,] 36.0000000 122.40000 147.6000000 
[109,] 36.3333333 123.53333 148.9666667 
[110,] 36.6666667 124.66667 150.3333333 
[111,] 37.0000000 125.80000 151.7000000 
[112,] 37.3333333 126.93333 153.0666667 
[113,] 37.6666667 128.06667 154.4333333 
[114,] 38.0000000 129.20000 155.8000000 
[115,] 38.3333333 130.33333 157.1666667 
[116,] 38.6666667 131.46667 158.5333333 
[117,] 39.0000000 132.60000 159.9000000 
[118,] 39.3333333 133.73333 161.2666667 
[119,] 39.6666667 134.86667 162.6333333 
[120,] 40.0000000 136.00000 164.0000000 
[121,] 40.3333333 137.13333 165.3666667 
[122,] 40.6666667 138.26667 166.7333333 
[123,] 41.0000000 139.40000 168.1000000 
[124,] 41.3333333 140.53333 169.4666667 
[125,] 41.6666667 141.66667 170.8333333 
[126,] 42.0000000 142.80000 172.2000000 
[127,] 42.3333333 143.93333 173.5666667 
[128,] 42.6666667 145.06667 174.9333333 
[129,] 43.0000000 146.20000 176.3000000 
[130,] 43.3333333 147.33333 177.6666667 
[131,] 43.6666667 148.46667 179.0333333 
[132,] 44.0000000 149.60000 180.4000000 
[133,] 44.3333333 150.73333 181.7666667 
[134,] 44.6666667 151.86667 183.1333333 
[135,] 45.0000000 153.00000 184.5000000 
[136,] 45.3333333 154.13333 185.8666667 
[137,] 45.6666667 155.26667 187.2333333 
[138,] 46.0000000 156.40000 188.6000000 
[139,] 46.3333333 157.53333 189.9666667 
[140,] 46.6666667 158.66667 191.3333333 
[141,] 47.0000000 159.80000 192.7000000 
[142,] 47.3333333 160.93333 194.0666667 
[143,] 47.6666667 162.06667 195.4333333 
[144,] 48.0000000 163.20000 196.8000000 
[145,] 48.3333333 164.33333 198.1666667 
[146,] 48.6666667 165.46667 199.5333333 
[147,] 49.0000000 166.60000 200.9000000 
[148,] 49.3333333 167.73333 202.2666667 
[149,] 49.6666667 168.86667 203.6333333 
[150,] 50.0000000 170.00000 205.0000000 
[151,] 50.3333333 171.13333 206.3666667 
[152,] 50.6666667 172.26667 207.7333333 
[153,] 51.0000000 173.40000 209.1000000 
[154,] 51.3333333 174.53333 210.4666667 
[155,] 51.6666667 175.66667 211.8333333 
[156,] 52.0000000 176.80000 213.2000000 
[157,] 52.3333333 177.93333 214.5666667 
[158,] 52.6666667 179.06667 215.9333333 
[159,] 53.0000000 180.20000 217.3000000 
[160,] 53.3333333 181.33333 218.6666667 
[161,] 53.6666667 182.46667 220.0333333 
[162,] 54.0000000 183.60000 221.4000000 
[163,] 54.3333333 184.73333 222.7666667 
[164,] 54.6666667 185.86667 224.1333333 
[165,] 55.0000000 187.00000 225.5000000 
[166,] 55.3333333 188.13333 226.8666667 
[167,] 55.6666667 189.26667 228.2333333 
[168,] 56.0000000 190.40000 229.6000000 
[169,] 56.3333333 191.53333 230.9666667 
[170,] 56.6666667 192.66667 232.3333333 
[171,] 57.0000000 193.80000 233.7000000 
[172,] 57.3333333 194.93333 235.0666667 
[173,] 57.6666667 196.06667 236.4333333 
[174,] 58.0000000 197.20000 237.8000000 
[175,] 58.3333333 198.33333 239.1666667 
[176,] 58.6666667 199.46667 240.5333333 
[177,] 59.0000000 200.60000 241.9000000 
[178,] 59.3333333 201.73333 243.2666667 
[179,] 59.6666667 202.86667 244.6333333 
[180,] 60.0000000 204.00000 246.0000000 
[181,] 60.3333333 205.13333 247.3666667 
[182,] 60.6666667 206.26667 248.7333333 
[183,] 61.0000000 207.40000 250.1000000 
[184,] 61.3333333 208.53333 251.4666667 
[185,] 61.6666667 209.66667 252.8333333 
[186,] 62.0000000 210.80000 254.2000000 
[187,] 62.3333333 211.93333 255.5666667 
[188,] 62.6666667 213.06667 256.9333333 
[189,] 63.0000000 214.20000 258.3000000 
[190,] 63.3333333 215.33333 259.6666667 
[191,] 63.6666667 216.46667 261.0333333 
[192,] 64.0000000 217.60000 262.4000000 
[193,] 64.3333333 218.73333 263.7666667 
[194,] 64.6666667 219.86667 265.1333333 
[195,] 65.0000000 221.00000 266.5000000 
[196,] 65.3333333 222.13333 267.8666667 
[197,] 65.6666667 223.26667 269.2333333 
[198,] 66.0000000 224.40000 270.6000000 
[199,] 66.3333333 225.53333 271.9666667 
[200,] 66.6666667 226.66667 273.3333333 
[201,] 67.0000000 227.80000 274.7000000 
[202,] 67.3333333 228.93333 276.0666667 
[203,] 67.6666667 230.06667 277.4333333 
[204,] 68.0000000 231.20000 278.8000000 
[205,] 68.3333333 232.33333 280.1666667 
[206,] 68.6666667 233.46667 281.5333333 
[207,] 69.0000000 234.60000 282.9000000 
[208,] 69.3333333 235.73333 284.2666667 
[209,] 69.6666667 236.86667 285.6333333 
[210,] 70.0000000 238.00000 287.0000000 
[211,] 70.3333333 239.13333 288.3666667 
[212,] 70.6666667 240.26667 289.7333333 
[213,] 71.0000000 241.40000 291.1000000 
[214,] 71.3333333 242.53333 292.4666667 
[215,] 71.6666667 243.66667 293.8333333 
[216,] 72.0000000 244.80000 295.2000000 
[217,] 72.3333333 245.93333 296.5666667 
[218,] 72.6666667 247.06667 297.9333333 
[219,] 73.0000000 248.20000 299.3000000 
[220,] 73.3333333 249.33333 300.6666667 
[221,] 73.6666667 250.46667 302.0333333 
[222,] 74.0000000 251.60000 303.4000000 
[223,] 74.3333333 252.73333 304.7666667 
[224,] 74.6666667 253.86667 306.1333333 
[225,] 75.0000000 255.00000 307.5000000 
[226,] 75.3333333 256.13333 308.8666667 
[227,] 75.6666667 257.26667 310.2333333 
[228,] 76.0000000 258.40000 311.6000000 
[229,] 76.3333333 259.53333 312.9666667 
[230,] 76.6666667 260.66667 314.3333333 
[231,] 77.0000000 261.80000 315.7000000 
[232,] 77.3333333 262.93333 317.0666667 
[233,] 77.6666667 264.06667 318.4333333 
[234,] 78.0000000 265.20000 319.8000000 
[235,] 78.3333333 266.33333 321.1666667 
[236,] 78.6666667 267.46667 322.5333333 
[237,] 79.0000000 268.60000 323.9000000 
[238,] 79.3333333 269.73333 325.2666667 
[239,] 79.6666667 270.86667 326.6333333 
[240,] 80.0000000 272.00000 328.0000000 
[241,] 80.3333333 273.13333 329.3666667 
[242,] 80.6666667 274.26667 330.7333333 
[243,] 81.0000000 275.40000 332.1000000 
[244,] 81.3333333 276.53333 333.4666667 
[245,] 81.6666667 277.66667 334.8333333 
[246,] 82.0000000 278.80000 336.2000000 
[247,] 82.3333333 279.93333 337.5666667 
[248,] 82.6666667 281.06667 338.9333333 
[249,] 83.0000000 282.20000 340.3000000 
[250,] 83.3333333 283.33333 341.6666667 
[251,] 83.6666667 284.46667 343.0333333 
[252,] 84.0000000 285.60000 344.4000000 
[253,] 84.3333333 286.73333 345.7666667 
[254,] 84.6666667 287.86667 347.1333333 
[255,] 85.0000000 289.00000 348.5000000 
[256,] 85.3333333 290.13333 349.8666667 
[257,] 85.6666667 291.26667 351.2333333 
[258,] 86.0000000 292.40000 352.6000000 
[259,] 86.3333333 293.53333 353.9666667 
[260,] 86.6666667 294.66667 355.3333333 
[261,] 87.0000000 295.80000 356.7000000 
[262,] 87.3333333 296.93333 358.0666667 
[263,] 87.6666667 298.06667 359.4333333 
[264,] 88.0000000 299.20000 360.8000000 
[265,] 88.3333333 300.33333 362.1666667 
[266,] 88.6666667 301.46667 363.5333333 
[267,] 89.0000000 302.60000 364.9000000 
[268,] 89.3333333 303.73333 366.2666667 
[269,] 89.6666667 304.86667 367.6333333 
[270,] 90.0000000 306.00000 369.0000000 
[271,] 90.3333333 307.13333 370.3666667 
[272,] 90.6666667 308.26667 371.7333333 
[273,] 91.0000000 309.40000 373.1000000 
[274,] 91.3333333 310.53333 374.4666667 
[275,] 91.6666667 311.66667 375.8333333 
[276,] 92.0000000 312.80000 377.2000000 
[277,] 92.3333333 313.93333 378.5666667 
[278,] 92.6666667 315.06667 379.9333333 
[279,] 93.0000000 316.20000 381.3000000 
[280,] 93.3333333 317.33333 382.6666667 
[281,] 93.6666667 318.46667 384.0333333 
[282,] 94.0000000 319.60000 385.4000000 
[283,] 94.3333333 320.73333 386.7666667 
[284,] 94.6666667 321.86667 388.1333333 
[285,] 95.0000000 323.00000 389.5000000 
[286,] 95.3333333 324.13333 390.8666667 
[287,] 95.6666667 325.26667 392.2333333 
[288,] 96.0000000 326.40000 393.6000000 
[289,] 96.3333333 327.53333 394.9666667 
[290,] 96.6666667 328.66667 396.3333333 
[291,] 97.0000000 329.80000 397.7000000 
[292,] 97.3333333 330.93333 399.0666667 
[293,] 97.6666667 332.06667 400.4333333 
[294,] 98.0000000 333.20000 401.8000000 
[295,] 98.3333333 334.33333 403.1666667 
[296,] 98.6666667 335.46667 404.5333333 
[297,] 99.0000000 336.60000 405.9000000 
[298,] 99.3333333 337.73333 407.2666667 
[299,] 99.6666667 338.86667 408.6333333 
[300,] 100.0000000 340.00000 410.0000000 
[301,] 100.3333333 341.13333 411.3666667 
[302,] 100.6666667 342.26667 412.7333333 
[303,] 101.0000000 343.40000 414.1000000 
[304,] 101.3333333 344.53333 415.4666667 
[305,] 101.6666667 345.66667 416.8333333 
[306,] 102.0000000 346.80000 418.2000000 
[307,] 102.3333333 347.93333 419.5666667 
[308,] 102.6666667 349.06667 420.9333333 
[309,] 103.0000000 350.20000 422.3000000 
[310,] 103.3333333 351.33333 423.6666667 
[311,] 103.6666667 352.46667 425.0333333 
[312,] 104.0000000 353.60000 426.4000000 
[313,] 104.3333333 354.73333 427.7666667 
[314,] 104.6666667 355.86667 429.1333333 
[315,] 105.0000000 357.00000 430.5000000 
[316,] 105.3333333 358.13333 431.8666667 
[317,] 105.6666667 359.26667 433.2333333 
[318,] 106.0000000 360.40000 434.6000000 
[319,] 106.3333333 361.53333 435.9666667 
[320,] 106.6666667 362.66667 437.3333333 
[321,] 107.0000000 363.80000 438.7000000 
[322,] 107.3333333 364.93333 440.0666667 
[323,] 107.6666667 366.06667 441.4333333 
[324,] 108.0000000 367.20000 442.8000000 
[325,] 108.3333333 368.33333 444.1666667 
[326,] 358.6000000 326.00000 326.0000000 
[327,] 359.7000000 327.00000 327.0000000 
[328,] 360.8000000 328.00000 328.0000000 
[329,] 361.9000000 329.00000 329.0000000 
[330,] 363.0000000 330.00000 330.0000000 
[331,] 364.1000000 331.00000 331.0000000 
[332,] 365.2000000 332.00000 332.0000000 
[333,] 366.3000000 333.00000 333.0000000 
[334,] 367.4000000 334.00000 334.0000000 
[335,] 368.5000000 335.00000 335.0000000 
[336,] 369.6000000 336.00000 336.0000000 
[337,] 370.7000000 337.00000 337.0000000 
[338,] 371.8000000 338.00000 338.0000000 
[339,] 372.9000000 339.00000 339.0000000 
[340,] 374.0000000 340.00000 340.0000000 
[341,] 375.1000000 341.00000 341.0000000 
[342,] 376.2000000 342.00000 342.0000000 
[343,] 377.3000000 343.00000 343.0000000 
[344,] 378.4000000 344.00000 344.0000000 
[345,] 379.5000000 345.00000 345.0000000 
[346,] 380.6000000 346.00000 346.0000000 
[347,] 381.7000000 347.00000 347.0000000 
[348,] 382.8000000 348.00000 348.0000000 
[349,] 383.9000000 349.00000 349.0000000 
[350,] 385.0000000 350.00000 350.0000000 
[351,] 386.1000000 351.00000 351.0000000 
[352,] 387.2000000 352.00000 352.0000000 
[353,] 388.3000000 353.00000 353.0000000 
[354,] 389.4000000 354.00000 354.0000000 
[355,] 390.5000000 355.00000 355.0000000 
[356,] 391.6000000 356.00000 356.0000000 
[357,] 392.7000000 357.00000 357.0000000 
+0

我猜'線框(SIGMA〜R * K,數據= as.data.frame(日誌))'應該可以工作,但很難知道沒有看到數據。 – Backlin 2013-03-11 14:22:24

+0

我可以發佈數據,但它的所有+ ve值。這只是產生了一個空盒子 – user124123 2013-03-11 14:25:25

+0

「+ ve」是什麼意思?我認爲'wireframe'需要你有'k'和'​​r'完整的網格,並且在缺少一個組合時不起作用。試着製作一個三維散點圖,不需要這個,*例如*用'rgl'包。 – Backlin 2013-03-11 14:30:49

回答

2

我不知道結果是否有意義或不(這是由你),但這裏有akima::interplattice::wireframe一個解決方案:

dat <- read.table("wftmp.dat",header=TRUE) 
require("akima") 
s <- with(dat,interp(r,k,sigma)) 
library("lattice") 
with(s,wireframe(z,row.values=x,col.values=y)) 

enter image description here

但是,使用rgl查看原始數據並添加插值曲面(您可能看過在與scatterplot3d以及)的原始數據表明,插值並沒有多大意義:

library("rgl") 
with(dat,plot3d(r,k,sigma,col="red")) 
surface3d(s$x,s$y,s$z,col="gray") 

enter image description here

也就是說,你的數據一起在(X,Y兩線的所在, z)空間,所以插值有點傻。

你很可能已經從基礎R以及一個pairs陰謀想通了這一點......

0

不能繪製這樣一個wireframe情節數據,因爲rk沒有形成網格。

你可以做的是

library(rgl) 
plot3d(logs[,"r"], logs[,"k"], logs[,"sigma"], type="s") 
+0

任何其他的想法?我無法使用rgl包工作 – user124123 2013-03-11 17:50:57

+0

你看過@geektrader鏈接的問題:http:// stackoverflow。com/questions/3979240/r-plotting-a-3d-surface-from-x-y-z?lq = 1?它使用'rgl',但@ spacedman的解決方案給出了一個通用的方法(使用'akima :: interp'),它也應該可以與'wireframe'一起使用。 – 2013-03-11 19:14:54

+0

安裝'rgl'並不像普通軟件包那樣簡單,因爲它需要openGL和其他系統特定的東西。它非常值得強悍,它會產生非常漂亮的圖形。你在運行什麼操作系統? – Backlin 2013-03-12 07:44:08