将ggplot2 facet代码从直方图修改为QQplot
Modify ggplot2 facet code from histogram to QQplot
我正在创建一大组图表来查看某些数据的分布。
为此,我想创建两种类型的图:
- 直方图
- QQ图
我在网上找到了这段很棒的代码,它已经对直方图进行了分面处理,并且通过使用一些 tidyr
和 purrr
函数可以满足我的需求。
但是当我尝试为 QQ 情节修改它时,我不知道到底需要做什么才能让它工作...
代码如下:
data.for.normality %>%
keep(is.numeric) %>%
gather() %>%
ggplot(aes(value)) +
facet_wrap(~ key, scales = "free", ncol = 3) +
geom_histogram()
这是输出:
现在我想为这样的 qqplots 修改它:
所以在一个完美的世界中,我会得到相同的分面输出,包括变量名和所有内容,但不是直方图 --> qqplots
想法?
这是 dput
中的数据示例:
> dput(data[1:20,25:33])
structure(list(Medical.File...NEW..Secs. = c(16L, 25L, 23L, 13L,
50L, 44L, 20L, 62L, 12L, 52L, 11L, 25L, 23L, 36L, 21L, 30L, 29L,
31L, 44L, 37L), Mirshm..Secs. = c(65L, 277L, 63L, 76L, 49L, 52L,
65L, 86L, 91L, 57L, 127L, 277L, 44L, 110L, 78L, 62L, 79L, 62L,
110L, 74L), Mirshm..NEW..Secs. = c(59L, 91L, 33L, 24L, 24L, 18L,
30L, 53L, 48L, 20L, 28L, 130L, 47L, 49L, 62L, 32L, 18L, 62L,
22L, 59L), Payments..Secs. = c(76L, 69L, 138L, 87L, 99L, 60L,
108L, 148L, 79L, 148L, 96L, 61L, 102L, 72L, 147L, 75L, 60L, 87L,
72L, 65L), Payments..NEW..Secs. = c(39L, 36L, 48L, 58L, 62L,
103L, 108L, 51L, 30L, 76L, 48L, 50L, 42L, 39L, 54L, 28L, 25L,
52L, 34L, 62L), Update.A..Secs. = c(239L, 129L, 99L, 128L, 88L,
79L, 98L, 127L, 138L, 229L, 249L, 99L, 128L, 66L, 70L, 79L, 98L,
290L, 159L, 299L), Update.A..NEW..Secs. = c(62L, 91L, 52L, 76L,
57L, 57L, 63L, 74L, 80L, 94L, 129L, 54L, 53L, 48L, 47L, 41L,
45L, 128L, 160L, 128L), SUM.OLD..Secs. = c(583L, 791L, 590L,
585L, 523L, 480L, 525L, 611L, 598L, 921L, 745L, 695L, 548L, 537L,
663L, 632L, 982L, 912L, 656L, 738L), SUM.NEW..Secs. = c(285L,
367L, 326L, 281L, 340L, 333L, 390L, 371L, 313L, 465L, 362L, 351L,
338L, 404L, 363L, 368L, 362L, 492L, 446L, 424L)), row.names = c(NA,
20L), class = "data.frame")
这里是纯文本:
data[1:20,25:33]
Medical.File...NEW..Secs. Mirshm..Secs. Mirshm..NEW..Secs. Payments..Secs. Payments..NEW..Secs. Update.A..Secs. Update.A..NEW..Secs.
1 16 65 59 76 39 239 62
2 25 277 91 69 36 129 91
3 23 63 33 138 48 99 52
4 13 76 24 87 58 128 76
5 50 49 24 99 62 88 57
6 44 52 18 60 103 79 57
7 20 65 30 108 108 98 63
8 62 86 53 148 51 127 74
9 12 91 48 79 30 138 80
10 52 57 20 148 76 229 94
11 11 127 28 96 48 249 129
12 25 277 130 61 50 99 54
13 23 44 47 102 42 128 53
14 36 110 49 72 39 66 48
15 21 78 62 147 54 70 47
16 30 62 32 75 28 79 41
17 29 79 18 60 25 98 45
18 31 62 62 87 52 290 128
19 44 110 22 72 34 159 160
20 37 74 59 65 62 299 128
SUM.OLD..Secs. SUM.NEW..Secs.
1 583 285
2 791 367
3 590 326
4 585 281
5 523 340
6 480 333
7 525 390
8 611 371
9 598 313
10 921 465
11 745 362
12 695 351
13 548 338
14 537 404
15 663 363
16 632 368
17 982 362
18 912 492
19 656 446
20 738 424
试试这个:
data.for.normality %>%
keep(is.numeric) %>%
gather() %>%
# you have to specify the sample you want to use
ggplot(aes(sample = value)) +
facet_wrap(~ key, scales = "free", ncol = 3) +
stat_qq() +
stat_qq_line()
输出
我正在创建一大组图表来查看某些数据的分布。 为此,我想创建两种类型的图:
- 直方图
- QQ图
我在网上找到了这段很棒的代码,它已经对直方图进行了分面处理,并且通过使用一些 tidyr
和 purrr
函数可以满足我的需求。
但是当我尝试为 QQ 情节修改它时,我不知道到底需要做什么才能让它工作...
代码如下:
data.for.normality %>%
keep(is.numeric) %>%
gather() %>%
ggplot(aes(value)) +
facet_wrap(~ key, scales = "free", ncol = 3) +
geom_histogram()
这是输出:
现在我想为这样的 qqplots 修改它:
所以在一个完美的世界中,我会得到相同的分面输出,包括变量名和所有内容,但不是直方图 --> qqplots
想法?
这是 dput
中的数据示例:
> dput(data[1:20,25:33])
structure(list(Medical.File...NEW..Secs. = c(16L, 25L, 23L, 13L,
50L, 44L, 20L, 62L, 12L, 52L, 11L, 25L, 23L, 36L, 21L, 30L, 29L,
31L, 44L, 37L), Mirshm..Secs. = c(65L, 277L, 63L, 76L, 49L, 52L,
65L, 86L, 91L, 57L, 127L, 277L, 44L, 110L, 78L, 62L, 79L, 62L,
110L, 74L), Mirshm..NEW..Secs. = c(59L, 91L, 33L, 24L, 24L, 18L,
30L, 53L, 48L, 20L, 28L, 130L, 47L, 49L, 62L, 32L, 18L, 62L,
22L, 59L), Payments..Secs. = c(76L, 69L, 138L, 87L, 99L, 60L,
108L, 148L, 79L, 148L, 96L, 61L, 102L, 72L, 147L, 75L, 60L, 87L,
72L, 65L), Payments..NEW..Secs. = c(39L, 36L, 48L, 58L, 62L,
103L, 108L, 51L, 30L, 76L, 48L, 50L, 42L, 39L, 54L, 28L, 25L,
52L, 34L, 62L), Update.A..Secs. = c(239L, 129L, 99L, 128L, 88L,
79L, 98L, 127L, 138L, 229L, 249L, 99L, 128L, 66L, 70L, 79L, 98L,
290L, 159L, 299L), Update.A..NEW..Secs. = c(62L, 91L, 52L, 76L,
57L, 57L, 63L, 74L, 80L, 94L, 129L, 54L, 53L, 48L, 47L, 41L,
45L, 128L, 160L, 128L), SUM.OLD..Secs. = c(583L, 791L, 590L,
585L, 523L, 480L, 525L, 611L, 598L, 921L, 745L, 695L, 548L, 537L,
663L, 632L, 982L, 912L, 656L, 738L), SUM.NEW..Secs. = c(285L,
367L, 326L, 281L, 340L, 333L, 390L, 371L, 313L, 465L, 362L, 351L,
338L, 404L, 363L, 368L, 362L, 492L, 446L, 424L)), row.names = c(NA,
20L), class = "data.frame")
这里是纯文本:
data[1:20,25:33]
Medical.File...NEW..Secs. Mirshm..Secs. Mirshm..NEW..Secs. Payments..Secs. Payments..NEW..Secs. Update.A..Secs. Update.A..NEW..Secs.
1 16 65 59 76 39 239 62
2 25 277 91 69 36 129 91
3 23 63 33 138 48 99 52
4 13 76 24 87 58 128 76
5 50 49 24 99 62 88 57
6 44 52 18 60 103 79 57
7 20 65 30 108 108 98 63
8 62 86 53 148 51 127 74
9 12 91 48 79 30 138 80
10 52 57 20 148 76 229 94
11 11 127 28 96 48 249 129
12 25 277 130 61 50 99 54
13 23 44 47 102 42 128 53
14 36 110 49 72 39 66 48
15 21 78 62 147 54 70 47
16 30 62 32 75 28 79 41
17 29 79 18 60 25 98 45
18 31 62 62 87 52 290 128
19 44 110 22 72 34 159 160
20 37 74 59 65 62 299 128
SUM.OLD..Secs. SUM.NEW..Secs.
1 583 285
2 791 367
3 590 326
4 585 281
5 523 340
6 480 333
7 525 390
8 611 371
9 598 313
10 921 465
11 745 362
12 695 351
13 548 338
14 537 404
15 663 363
16 632 368
17 982 362
18 912 492
19 656 446
20 738 424
试试这个:
data.for.normality %>%
keep(is.numeric) %>%
gather() %>%
# you have to specify the sample you want to use
ggplot(aes(sample = value)) +
facet_wrap(~ key, scales = "free", ncol = 3) +
stat_qq() +
stat_qq_line()
输出