繁体   English   中英

如何在ggplot中用两条线的差在线上覆盖条形图?

[英]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_linegeom_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM