删除ggplot2 / lattice的barcharts中的空组空间

时间:2014-03-10 04:48:40

标签: r ggplot2 lattice

这是关于我的Q& A关于使用格子中的条形图绘制已定义组的情况。因此,按照这个小练习的解决方案,我已经意识到R绘制了数据框中显示的数据,并在下一行数据分配到条形图上的另一个空间时在每个条之间留下空格。如果你看一下情节,你会理解我的意思:

> data.frame(SOExample2)
   Study.ID Diagnosis   Level
1         1    Cancer 1040.58
2         2    Cancer  810.92
3         3    Cancer 2087.80
4         4    Cancer 3959.02
5         5    Cancer 3648.48
6         6    Cancer 1191.74
7         7    Cancer 1156.90
8         8    Cancer 2705.56
9         9    Cancer  827.26
10       10    Cancer  867.16
11       11    Cancer  575.10
12       12    Cancer  699.85
13       13    Cancer 1121.86
14       14    Cancer 1830.62
15       15    Cancer 4203.01
16       16    Cancer  874.59
17       17    Cancer 1037.20
18       18    Cancer 1398.56
19       19    Cancer  910.49
20       20    Cancer  725.60
21       21    Cancer  894.05
22       22    Cancer 1489.25
23       23    Cancer 1518.76
24       24    Cancer  821.60
25       25    Cancer  530.35
26       26    Cancer 1191.80
27       27    Cancer 1920.12
28       28    Cancer 1330.60
29       29    Cancer  835.95
30       30    Cancer  525.22

require(lattice)
SOExample2$group<-ifelse(Level>median(Level),1,0)
barchart(Level~factor(group), data=SOExample2, groups=Study.ID)

这给了我以下条形图:

Read the chart from left to right to understand how R makes spaces between the groups

同样,您可以在ggplot2中执行相同的操作,但会发生同样的事情:

require(ggplot2)
g1<-ggplot(SOExample2, aes(x=group, y=Level))
g1+geom_histogram(stat="identity")+facet_grid(.~group)+labs(x="Group")+labs(y="Levels")

The same plot made with ggplot

那么,有关如何删除这些空白空间的任何想法?

干杯,

奥利弗

1 个答案:

答案 0 :(得分:3)

您可以使用Study.ID作为x值并将其转换为因子,以确保不将值解释为数值。然后,对于facet_grid()中的ggplot2解决方案,添加参数scale="free"以删除空白级别。

ggplot(SOExample2,aes(factor(Study.ID),y=Level))+
             geom_bar(stat="identity")+
             facet_grid(.~group,scales="free")

enter image description here