R

时间:2015-10-10 14:25:31

标签: r ggplot2 dataframe reshape2

我有一个直方图,其中x有42个值。我使用facet_wrap来处理逻辑向量的True / False值。它看起来像这样。

enter image description here

正如你所看到的,我主要担心的是4-6个x周期(即tra 1到4和test 1& 2)。我想要做的是制作两个饼图,显示高于阈值的试验的相对频率(我可能会调整为具有这些类别)和类别"其他"完成100%的计数。

我相信我的问题在于我用于ggplot的data.frame。在这种情况下,我应该如何重塑我的数据? 我的数据的子集和图的代码

   dput(df[1:500,6:8])
structure(list(Entrenamiento = c("VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", 
"FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "FALSO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", "VERDADERO", 
"VERDADERO", "VERDADERO", "VERDADERO"), Maximo = c(219.545, 24.273, 
18.364, 5.864, 15.182, 142.545, 11.955, 1.455, 36.182, 146.182, 
17.682, 29.364, 24.136, 23.636, 30.955, 10.136, 30.045, 28.227, 
4.909, 37.636, 18.955, 55.136, 1.727, 4.5, 46.045, 0, 12.364, 
10.636, 115.5, 13.045, 122.455, 8.409, 1.727, 3.182, 0.409, 16.5, 
5.636, 13.864, 22.091, 23.455, 9.045, 18.045, 3, 90.727, 9.273, 
99.227, 17.364, 15.136, 7.636, 44.227, 67.909, 60.5, 0.909, 32.409, 
5.273, 5.727, 0, 3.864, 84.273, 0, 2.409, 28, 114.091, 26.091, 
13.773, 23.455, 2.591, 27.045, 21, 106.636, 14.136, 0.636, 3.045, 
64.773, 32.5, 102.227, 39.318, 21.909, 17.636, 5.727, 28.955, 
210, 31.455, 36, 0, 35.227, 79.682, 7.318, 41.955, 12, 98.5, 
183.864, 123.455, 113.045, 63.091, 1.273, 259.591, 177.773, 58.136, 
35.955, 5.364, 8.864, 20.273, 136.182, 70.273, 93, 48.545, 64.318, 
104.591, 177.864, 6.955, 31.455, 8.455, 132.136, 82.864, 21.227, 
0, 37.182, 213.318, 22.273, 6.273, 32.818, 8.545, 11.636, 18.636, 
30.045, 13.045, 10.727, 31.136, 8.273, 63.364, 31.909, 88.818, 
8.455, 48.409, 43.091, 54.818, 0.545, 23.773, 26.636, 21.636, 
22, 65.773, 95.682, 6.227, 0.773, 33.273, 35.636, 1.182, 39.591, 
1.182, 57.545, 80.955, 7.273, 24.773, 2.364, 69.13636364, 51.5, 
63.81818182, 88.13636364, 32.13636364, 176, 6.681818182, 7.318181818, 
99.95454545, 22.13636364, 26.72727273, 63.72727273, 82.22727273, 
110.7727273, 88.77272727, 24.77272727, 16.5, 54.95454545, 28.59090909, 
36, 6.045454545, 10.59090909, 26.77272727, 53.40909091, 62.27272727, 
141.2727273, 19.90909091, 17.59090909, 26.31818182, 57.31818182, 
72.18181818, 28.72727273, 56.68181818, 62.27272727, 65.68181818, 
65.86363636, 71.22727273, 20.86363636, 80.13636364, 1.045454545, 
53.31818182, 34.77272727, 27.72727273, 0.954545455, 31.95454545, 
12.18181818, 42.63636364, 50.54545455, 0, 20, 112.8181818, 94.18181818, 
6.545454545, 74.31818182, 9.818181818, 15.59090909, 13.40909091, 
45.77272727, 19.86363636, 11.31818182, 26.95454545, 6.136363636, 
4.318181818, 19.54545455, 0.772727273, 40, 16.77272727, 18.54545455, 
3.363636364, 0, 17.59090909, 5.909090909, 136.1363636, 39, 72, 
0, 36.27272727, 12.54545455, 2.681818182, 40.18181818, 61.13636364, 
13.13636364, 51.18181818, 0.409090909, 49.36363636, 105.1818182, 
56.09090909, 44.81818182, 147.5, 168.9545455, 41.86363636, 11.5, 
79.27272727, 3.590909091, 214.2272727, 12.95454545, 83.04545455, 
86.95454545, 0, 10.18181818, 0, 26.54545455, 65.27272727, 4, 
36.13636364, 25.95454545, 84.27272727, 41.54545455, 26.27272727, 
12.09090909, 59.72727273, 158.6363636, 64.95454545, 27.59090909, 
40.31818182, 19.45454545, 33.13636364, 62.36363636, 85.31818182, 
48.5, 64.13636364, 93.72727273, 56.86363636, 112, 128.9545455, 
12.72727273, 66.59090909, 142.3181818, 41.77272727, 15.54545455, 
23.27272727, 39, 0, 16.86363636, 146, 9.772727273, 15.36363636, 
8.681818182, 20.63636364, 36.45454545, 55.86363636, 126.6818182, 
10.36363636, 19.18181818, 9.545454545, 48.86363636, 69.31818182, 
45.13636364, 47.27272727, 71.59090909, 309.2272727, 36.95454545, 
44.86363636, 72.81818182, 27.09090909, 100.1363636, 23.81818182, 
37.77272727, 27.22727273, 131.4545455, 14.27272727, 14.09090909, 
54.27272727, 50.40909091, 54.45454545, 57.27272727, 238.7727273, 
14.77272727, 54.81818182, 83.81818182, 78.18181818, 25.04545455, 
14.31818182, 136.1818182, 66.27272727, 43.59090909, 164.8181818, 
94.18181818, 148.4090909, 50.54545455, 72.86363636, 14.77272727, 
134.5909091, 8.090909091, 31.40909091, 35.86363636, 32.22727273, 
13.22727273, 116.5454545, 17.86363636, 85.27272727, 71.09090909, 
155.6818182, 183, 69.18181818, 86.72727273, 71.27272727, 13.04545455, 
221.8636364, 114.5909091, 6.136363636, 106.9090909, 10.45454545, 
19.59090909, 92.40909091, 147.6818182, 80.45454545, 24, 24.18181818, 
20.63636364, 27.81818182, 11.77272727, 15.59090909, 47.59090909, 
57.77272727, 89.68181818, 98.22727273, 24.81818182, 19.04545455, 
145.9090909, 11.18181818, 7.681818182, 36.86363636, 139.8181818, 
73.5, 11.04545455, 87.09090909, 5.590909091, 70.22727273, 8.181818182, 
102.8636364, 108.1363636, 71.81818182, 35.86363636, 29.90909091, 
80.36363636, 188.8636364, 16.54545455, 8.454545455, 22.31818182, 
36.90909091, 123.2727273, 56.09090909, 76.36363636, 9.590909091, 
164.4545455, 179.8636364, 209.0454545, 38.86363636, 40.63636364, 
22.68181818, 30.13636364, 17.22727273, 41.86363636, 8.227272727, 
63.40909091, 54.77272727, 63.18181818, 58.5, 23.72727273, 278.3181818, 
26.31818182, 142.3181818, 303.6363636, 18.18181818, 15.22727273, 
73.04545455, 185.0909091, 98.81818182, 200.3636364, 11.72727273, 
60.5, 154, 55.27272727, 115.4090909, 17.09090909, 20.18181818, 
26.77272727, 47, 61.40909091, 151.6363636, 29.68181818, 5.818181818, 
118.5454545, 66.63636364, 19.22727273, 3.409090909, 13.22727273, 
7.454545455, 186.9545455, 54.45454545, 13, 126.6363636, 223.1363636, 
7.409090909, 50.5, 48.36363636, 118.9545455, 13.04545455, 183.1363636, 
74.5, 23.68181818, 62.81818182, 101.9545455, 101.3636364, 23.27272727, 
10.5, 19.5, 58.04545455, 2.727272727, 22.90909091, 78.54545455, 
15.86363636, 4.863636364, 13.22727273, 2.636363636, 64.63636364, 
3.954545455, 42.72727273, 15.77272727, 63.86363636, 73.59090909, 
94.54545455, 177.4090909, 17, 77, 57.22727273, 214.2272727, 38.72727273, 
24, 154.6363636, 29.63636364, 150.5909091, 34.72727273, 264.5909091, 
22.5, 30.5, 192.4545455, 29.86363636, 17.54545455, 6.954545455, 
39.13636364, 20.27272727, 47.59090909), Pasaje = structure(c(2L, 
1L, 31L, 2L, 31L, 2L, 4L, 31L, 31L, 2L, 2L, 1L, 31L, 31L, 32L, 
2L, 31L, 2L, 2L, 32L, 31L, 31L, 32L, 32L, 2L, 1L, 31L, 2L, 32L, 
4L, 4L, 3L, 1L, 1L, 2L, 1L, 31L, 31L, 32L, 4L, 31L, 31L, 31L, 
32L, 31L, 32L, 32L, 31L, 2L, 32L, 31L, 32L, 2L, 32L, 4L, 32L, 
1L, 32L, 32L, 1L, 31L, 32L, 32L, 3L, 32L, 32L, 32L, 32L, 31L, 
32L, 1L, 3L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 4L, 32L, 2L, 
31L, 32L, 1L, 1L, 31L, 32L, 1L, 1L, 31L, 1L, 32L, 31L, 32L, 2L, 
32L, 31L, 31L, 1L, 3L, 2L, 3L, 4L, 31L, 2L, 31L, 32L, 2L, 32L, 
2L, 32L, 1L, 31L, 31L, 31L, 1L, 32L, 31L, 31L, 32L, 2L, 32L, 
32L, 31L, 31L, 31L, 31L, 31L, 2L, 31L, 31L, 31L, 4L, 32L, 32L, 
32L, 32L, 32L, 31L, 32L, 32L, 32L, 32L, 31L, 31L, 31L, 32L, 31L, 
31L, 1L, 31L, 32L, 31L, 31L, 1L, 1L, 2L, 2L, 4L, 2L, 32L, 31L, 
31L, 4L, 3L, 32L, 2L, 31L, 2L, 2L, 31L, 4L, 2L, 32L, 2L, 2L, 
1L, 2L, 32L, 2L, 31L, 31L, 31L, 4L, 2L, 31L, 1L, 31L, 3L, 2L, 
2L, 32L, 31L, 1L, 4L, 32L, 32L, 32L, 32L, 32L, 31L, 31L, 32L, 
1L, 31L, 3L, 31L, 31L, 32L, 32L, 31L, 32L, 31L, 31L, 31L, 32L, 
31L, 1L, 3L, 31L, 32L, 32L, 32L, 31L, 1L, 2L, 2L, 32L, 32L, 32L, 
1L, 32L, 31L, 1L, 32L, 2L, 1L, 1L, 1L, 1L, 1L, 32L, 4L, 2L, 3L, 
4L, 1L, 2L, 4L, 1L, 2L, 2L, 2L, 1L, 32L, 1L, 31L, 31L, 31L, 1L, 
1L, 31L, 31L, 31L, 31L, 1L, 31L, 2L, 1L, 2L, 31L, 2L, 2L, 3L, 
32L, 3L, 4L, 32L, 31L, 31L, 32L, 32L, 31L, 31L, 3L, 32L, 31L, 
1L, 31L, 32L, 1L, 32L, 1L, 31L, 32L, 1L, 1L, 1L, 3L, 1L, 1L, 
4L, 2L, 1L, 2L, 2L, 2L, 1L, 4L, 4L, 32L, 1L, 32L, 1L, 2L, 32L, 
28L, 31L, 2L, 1L, 32L, 4L, 24L, 2L, 2L, 2L, 1L, 2L, 4L, 7L, 14L, 
1L, 31L, 4L, 31L, 31L, 17L, 4L, 19L, 8L, 32L, 20L, 32L, 2L, 1L, 
1L, 2L, 2L, 31L, 4L, 2L, 32L, 31L, 4L, 2L, 9L, 31L, 8L, 31L, 
31L, 32L, 31L, 31L, 32L, 31L, 31L, 4L, 1L, 31L, 31L, 32L, 32L, 
32L, 29L, 31L, 31L, 19L, 31L, 32L, 31L, 32L, 32L, 10L, 31L, 13L, 
31L, 32L, 32L, 31L, 31L, 31L, 32L, 32L, 31L, 26L, 1L, 32L, 3L, 
4L, 1L, 1L, 1L, 32L, 2L, 2L, 31L, 2L, 2L, 4L, 1L, 31L, 10L, 10L, 
2L, 5L, 31L, 32L, 19L, 2L, 2L, 2L, 20L, 31L, 1L, 31L, 31L, 2L, 
4L, 3L, 23L, 12L, 31L, 31L, 1L, 1L, 31L, 31L, 12L, 32L, 31L, 
31L, 31L, 31L, 32L, 31L, 31L, 26L, 31L, 32L, 3L, 32L, 32L, 32L, 
2L, 32L, 32L, 31L, 32L, 31L, 32L, 32L, 17L, 31L, 31L, 30L, 31L, 
31L, 31L, 30L, 1L, 25L, 31L, 31L, 32L, 31L, 1L, 32L, 32L, 2L, 
32L, 2L, 31L, 2L, 1L, 1L, 2L, 1L, 2L, 31L, 32L, 31L, 1L, 2L, 
2L, 31L, 1L, 31L, 2L, 1L), .Label = c("tra1", "tra2", "tra3", 
"tra4", "tra5", "tra6", "tra7", "tra8", "tra9", "tra10", "tra11", 
"tra12", "tra13", "tra14", "tra15", "tra16", "tra17", "tra18", 
"tra19", "tra20", "tra21", "tra22", "tra23", "tra24", "tra25", 
"tra26", "tra27", "tra28", "tra29", "tra30", "test1", "test2", 
"test3", "test4", "test5", "test6", "test7", "test8", "test9", 
"test10", "test11", "test12"), class = "factor")), .Names = c("Entrenamiento", 
"Maximo", "Pasaje"), row.names = c(NA, 500L), class = "data.frame")

    ggplot(df,aes(Pasaje))+
      geom_histogram()+ theme_bw()+
      theme(axis.text.x = element_text(angle = 90, hjust = 1))+
      facet_wrap(~ Entrenamiento)

我在这里查看了相关的答案,但我仍然无法理解我应该用来完成工作的直方图。

Pie charts in ggplot2 with variable pie sizes

Converting bar chart to pie chart in R

http://www.sthda.com/english/wiki/ggplot2-pie-chart-quick-start-guide-r-software-and-data-visualization

http://docs.ggplot2.org/current/coord_polar.html

更新2

我找到了有用的代码here

它几乎完成了这项工作,我正在尝试修改阈值部分以获得输出。

# Your data
# get counts and melt it

frec<-table(df$Pasaje,df$Entrenamiento)
data<-melt(frec)
names(data)<-c("Pasaje","Entrenamiento","Frecuencia")


# calculate percentage:
m1 = ddply(data, .(Entrenamiento), summarize, ratio=Frecuencia/sum(Frecuencia))

#order data frame (needed to comply with percentage column):
m2 = data[order(data$Entrenamiento),]

# combine them:
mydf = data.frame(m2,ratio=m1$ratio)

# get positions of percentage labels:
mydf = ddply(mydf, .(Entrenamiento), transform, position = cumsum(Frecuencia) - 0.5*Frecuencia) 

# Establish threshold

thres<-0.01 # Play here to define % desired
mydf2 = mydf[which(mydf$ratio>thres),]
for (i in mydf2$Pasaje){  # Maybe not the best approach
if (grep(i,mydf$Pasaje)==F){
  mydf$Pasaje2<-"otro"
} else{
  v<-grep(i,mydf$Pasaje)
  mydf$Pasaje2[v]<-i      
  }
}


# create bar plot
pie = ggplot(mydf, aes(x = factor(1), y = Frecuencia, fill = as.factor(Pasaje2))) +
  geom_bar(stat = "identity", width = 1) +
  facet_wrap(~Entrenamiento)

# make a pie
pie = pie + coord_polar(theta = "y")

# add labels
pie + geom_text(aes(label = sprintf("%1.2f%%", 100*ratio), y = position))

3 个答案:

答案 0 :(得分:2)

我认为这可以让你更接近你想要的东西:

library(dplyr)
library(tidyr)
library(scales)
library(ggplot2)
library(viridis)

count(df, Entrenamiento, Pasaje) %>% 
  mutate(pct=n/sum(n)) %>% 
  ungroup() %>% 
  complete(Pasaje, Entrenamiento) %>% 
  ggplot(aes(x=Pasaje, y=Entrenamiento, fill=pct)) +
  geom_tile(color="#7f7f7f", size=0.1) +
  coord_fixed() +
  scale_fill_viridis(name="Percent", label=percent, na.value="white") +
  labs(x=NULL, y=NULL) +
  theme_minimal() +
  theme(axis.text.x=element_text(angle=90, hjust=1)) +
  theme(panel.grid=element_blank())

enter image description here

答案 1 :(得分:1)

一般来说,饼图是个坏主意。由于这个原因,ggplot2故意没有将它们包含为简单的输出。

如果你真的必须,这是一个快速的方法,使用你的数据:

library(ggplot2)

ggplot(df, aes(x = factor(1), fill = factor(Pasaje))) +
           geom_bar(width = 1) +
           coord_polar(theta = "y")

enter image description here

我们所做的是制作宽度= 1的叠加条形图,然后使用coord_polar将其打包成饼图。

coord_polar的帮助表明这不是一个好主意:

  

注意:请谨慎使用这些图 - 极坐标有   主要的感性问题。这些例子的要点是   演示如何描述这些常见的情节   语法。请谨慎使用EXTREME。

您也可以在基地进行:

pie(table(df$Pasaje), labels=names(table(df$Pasaje)))
enter image description here

答案 2 :(得分:1)

你走了。我已将您的dput数据输入到名为x的数据框中。

我没有打扰您的自定义主题,但您显然可以添加它。

library(ggplot2)
library(scales)
library(plyr)

x2 <- ddply(x, .var= c("Pasaje", "Entrenamiento"), function(x) {return(nrow(x))})

ggplot(x2,aes(x=reorder(Pasaje, V1), y= V1))+
  geom_bar(stat= "identity")+ coord_flip() +
  facet_wrap(~ Entrenamiento) + scale_y_continuous(labels= percent) +
  labs(x= "Pasaje", y= "Percent of Counts")

ggplot(x2,aes(x=reorder(Pasaje, V1), y= V1))+
  geom_bar(stat= "identity")+ coord_flip() +
  facet_wrap(~ Entrenamiento) + 
  labs(x= "Pasaje", y= "Counts")

enter image description here enter image description here

修改

如果由于最初未指定的“自然时间顺序”而不想重新排序轴,则可以随时删除对reorder的调用