这是我关于使用格子中的条形图绘制定义组的问答的后续。因此,按照这个小练习的解决方案,我意识到 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)
这给了我以下条形图:
同样,您可以在 中执行相同的操作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)
那么,关于如何删除这些空白空间有什么想法吗?
干杯,
奥利弗
您可以使用Study.ID
x 值并将其转换为因子以确保值不会被解释为数字。然后对于ggplot2
facet_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)