我试图围绕散点图的数据点(使用ggplot2),以便(1)100%的数据点和(2)80%的数据点都在该圈内。 (参见1 - 喜欢这个sctech(请原谅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:
很好,因为它可以完成轮廓的凹痕。但是,我不知道如何获得一个包围我100%数据的船体,以及第二个包裹着我80%数据的船体。
我的第二种方法是使用geom_encircle()
包的ggalt
函数。这导致以下情节3
这一次,我的整个数据点都被包围了 - 到目前为止一直很好。但是"凹陷"像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:
这次,再次,凹痕不存在。另一个问题是,设置prop=0.7
和prop=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:
我想表明我的大多数Datapoints都位于较低的部分,但仍然包围所有数据,如7中所示:
____________________________________________
EDIT2:
"终极目标"将这两个轮廓(没有相应的数据点)与另一个数据集进行比较,以查看是否存在重叠,但是没有过多的数据点太多的结果图。