[英]How to overlay a bar plot on the line with difference of two lines in ggplot?
这是来自ggplot的一些代码,如下所示:
p <- ggplot(db,aes(x,value,color=variable))
p <- p+geom_line(size=1)
p <- p+geom_point()
p+facet_wrap(facets = ~gp, scale = 'free_x')
我想在图中添加条形图以显示两条线的差异,因为差异很难在图中进行比较。 我现在应该怎么办? 在variable
添加新级别并手动计算差异(可以添加另一条线而不是图形中的条形)?
数据集在这里:
> db
gp x variable value
1 13 1 mode1 71.3756
2 13 4 mode1 74.1380
3 13 7 mode1 74.5840
4 13 10 mode1 74.7552
5 13 13 mode1 74.8452
6 13 16 mode1 74.9004
7 13 19 mode1 74.9380
8 16 1 mode1 71.4320
9 16 4 mode1 74.2012
10 16 7 mode1 74.6484
11 16 10 mode1 74.8204
12 16 13 mode1 74.9104
13 16 16 mode1 74.9660
14 16 19 mode1 75.0036
15 19 1 mode1 71.4708
16 19 4 mode1 74.2448
17 19 7 mode1 74.6928
18 19 10 mode1 74.8652
19 19 13 mode1 74.9556
20 19 16 mode1 75.0112
21 19 19 mode1 75.0488
22 13 1 mode2 77.2172
23 13 4 mode2 78.8460
24 13 7 mode2 79.4080
25 13 10 mode2 79.6844
26 13 13 mode2 79.8472
27 13 16 mode2 79.9544
28 13 19 mode2 80.0320
29 16 1 mode2 77.2884
30 16 4 mode2 78.9224
31 16 7 mode2 79.4864
32 16 10 mode2 79.7636
33 16 13 mode2 79.9268
34 16 16 mode2 80.0360
35 16 19 mode2 80.1120
36 19 1 mode2 77.3376
37 19 4 mode2 78.9752
38 19 7 mode2 79.5404
39 19 10 mode2 79.8180
40 19 13 mode2 79.9820
41 19 16 mode2 80.0880
42 19 19 mode2 80.1640
您可以使用stat_summary
函数通过diff
函数来计算diff
。 此外,您必须从ggplot
删除color
美学,然后将其添加到geom_line
和geom_point
。
library(ggplot2)
ggplot(db, aes(x, value)) +
geom_line(size = 1, aes(color = variable)) +
geom_point(aes(color = variable)) +
facet_wrap(facets = ~ gp, scale = 'free_x') +
stat_summary(fun.y = diff, geom = "bar")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.