删除 ggplot2/lattice 条形图中的空组空间

OFi*_*ish 1 r ggplot2 lattice

这是我关于使用格子中的条形图绘制定义组的问答的后续。因此,按照这个小练习的解决方案,我意识到 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)
Run Code Online (Sandbox Code Playgroud)

这给了我以下条形图:

从左到右阅读图表,了解 R 如何在组之间留出空间

同样,您可以在 中执行相同的操作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")
Run Code Online (Sandbox Code Playgroud)

使用 ggplot 绘制相同的图

那么,关于如何删除这些空白空间有什么想法吗?

干杯,

奥利弗

Did*_*rts 5

您可以使用Study.IDx 值并将其转换为因子以确保值不会被解释为数字。然后对于ggplot2facet_grid()内部的解决方案添加参数scale="free"以删除空级别。

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

在此输入图像描述