散点图中包含100%和80%数据的数据轮廓

时间:2017-09-15 13:34:03

标签: r ggplot2 scatter-plot contour

我试图围绕散点图的数据点(使用ggplot2),以便(1)100%的数据点和(2)80%的数据点都在该圈内。 (参见1 - 喜欢这个sctech(请原谅snippingtool的懒惰执行)

Like in this sctech (please excuse the lazy execution with snippingtool)

这是我的虚拟数据集:

 x  y
1   2
1   3
1   4
1   5
2   1
2   2
2   3
2   4
2   5
3   1
3   2
3   3
3   4
4   1
4   2
4   3
5   1
5   2
5   3
5   4
5   9
5   10
6   1
6   2
6   3
6   4
6   5
6   6
6   8
6   9
6   10
7   1
7   2
7   3
7   4
7   5
7   6
7   7
7   8
7   9
7   10
8   2
8   3
8   4
8   5
8   6
8   7
8   8
8   9

我尝试了多种方法来实现这一目标,但没有什么能真正满足我想要实现的目标。

我的第一个方法是geom_density2d()。但是,我在解释结果方面遇到了麻烦,因为我真的不知道levels的意思。

我尝试了以下内容:

ggplot(myData, aes(x,y)) + geom_point() + geom_density2d(bins=4, aes(colour=..level..))

这导致了这个情节2

geom_density2d plot with bins=4 and colours set to ..level..

很好,因为它可以完成轮廓的凹痕。但是,我不知道如何获得一个包围我100%数据的船体,以及第二个包裹着我80%数据的船体。

我的第二种方法是使用geom_encircle()包的ggalt函数。这导致以下情节3

geom_encircle of myData

这一次,我的整个数据点都被包围了 - 到目前为止一直很好。但是"凹陷"像g eom_contour()情节中的情节不存在,我也不知道如何添加"包围"这只占我数据点的80%。

我的第三种方法是使用geom_bagplot()函数(描述为here)。

ggplot(myData, aes(x,y)) + geom_point() + geom_bag(prop=0.9) + geom_bag(prop=0.8)

(使用geom_bag()我不能使用prop = 1.0来覆盖所有数据点,但是将其设置为0.9就足够了)

这会产生以下情节5

geom_bagplot() with 90 and 80% of the Data

这次,再次,凹痕不存在。另一个问题是,设置prop=0.7prop=0.7会产生完全相同的结果。另一个问题是,船体不像geom_contour()那样平滑。

如何在1中制作与我的草图相似的情节(使用ggplot2)?

提前致谢!

____________________________________________

修改

显示我的数据点的实际分布的实际数据集:

    x   y
1   -19.397412  47.544324
2   -8.213419   69.892953
3   -29.926849  39.743923
4   -75.377447  79.817208
5   -9.215048   40.705533
6   -42.868995  45.721222
7   -85.590572  84.058463
8   -62.544121  69.371364
9   -60.209205  64.546267
10  3.598963    20.109707
11  -4.552074   61.3339
12  -197.619021 52.225312
13  -147.133639 56.96088
14  -59.402414  56.487012
15  -68.361091  46.811878
16  -105.556485 57.603839
17  -94.354948  32.706933
18  -107.26281  28.477637
19  -155.692967 35.106937
20  -80.819257  30.664812
21  -142.055086 33.728788
22  -118.353934 27.362929
23  -114.634413 31.501665
24  -113.470642 29.136781
25  -181.380891 41.046883
26  -171.106218 23.359443
27  -156.720415 35.450407
28  -165.042839 29.349575
29  -92.869955  25.478965
30  -114.78719  23.860353
31  -134.115204 25.491367
32  -109.430656 19.105614
33  -120.451655 25.97992
34  -87.570713  21.111895
35  -91.222139  22.484895
36  -208.979695 38.311266
37  -98.814223  16.121487
38  -201.812263 49.547512
39  -168.948464 39.583593
40  -112.44335  20.979357
41  -174.138029 28.470047
42  -220.936718 33.452972
43  -169.687859 33.173458
44  -157.119306 38.573987
45  -150.682075 41.66627
46  -77.397116  27.220171
47  -177.559527 53.278523
48  -61.212396  6.796908
49  -94.602774  24.669706
50  -204.333869 37.002679
51  -124.442364 31.519392
52  -165.722504 39.464188
53  -57.849212  23.973774
54  -106.643382 38.560785
55  -90.679094  29.863184
56  -132.476054 31.988021
57  -188.33621  29.658416
58  -136.247184 38.870171
59  -59.929772  20.626164
60  -121.020003 33.862312
61  -82.968422  33.033312
62  -79.130004  32.800121
63  -51.463395  23.452366
64  -63.819269  27.257994
65  -64.02259   27.711516
66  -66.876407  18.156063
67  -68.175454  22.996369
68  -108.640035 29.915306
69  -21.512647  16.930815
70  -66.902542  17.177093
71  -160.262625 33.061052
72  -41.672641  30.510433
73  -83.31784   28.965415
74  -132.410284 22.843924
75  -54.724716  10.642682
76  -69.688094  30.798878
77  -120.775133 24.597096
78  -78.655551  30.368373
79  -68.299767  35.937048
80  -45.037891  21.636422
81  -49.679704  19.508719
82  -62.018393  76.199247
83  -113.777141 27.730892
84  -74.630501  49.062317
85  -95.154793  37.279829
86  -65.229569  46.26744
87  -42.139223  16.38709
88  -94.186408  28.708069
89  -100.920471 27.533579
90  -66.332707  22.573064
91  -26.419725  13.948061
92  -152.704377 34.165409
93  -50.309209  22.032052
94  -125.896489 34.411915
95  -119.304969 28.786249
96  -41.689412  37.314049
97  -99.936438  31.363461
98  -74.807901  24.259652

这会产生以下情节6

Actual datapoints

我想表明我的大多数Datapoints都位于较低的部分,但仍然包围所有数据,如7中所示:

enter image description here

____________________________________________

EDIT2:

"终极目标"将这两个轮廓(没有相应的数据点)与另一个数据集进行比较,以查看是否存在重叠,但是没有过多的数据点太多的结果图。

0 个答案:

没有答案