簡體   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