在ggplot2中生成水平缺口图
Generating horizontal notch plot in ggplot2
我有一个数据,其中包含 3 种不同的疾病状况及其几种结果。疾病在第一列,结果从第二列开始命名。请看附件中的数据。
Disease A B C D E F G H
X 0.001527882 0.003459413 0.000648574 0.002127627 0.000847073 0.002628663 0.00000156 0.001697012
X 0.001848781 0.003641997 0.000876108 0.0024079 0.001061678 0.00253612 0.00000191 0.001761288
X 0.004304498 0.005887634 0.003197471 0.003581047 0.002125073 0.003125686 0.000025 0.001974246
X 0.006675181 0.00784345 0.004085157 0.005653283 0.003118116 0.001897106 0.000011 0.004055166
X 0.006206229 0.007407223 0.003775627 0.005398474 0.002903612 0.001901196 0.0000138 0.003867669
X 0.008291067 0.010172375 0.005316099 0.007294589 0.003807516 0.002711993 0.00000431 0.004335257
X 0.00405819 0.006540146 0.002686623 0.004762546 0.00163977 0.003309515 0.00000789 0.001957311
X 0.0067902 0.010219971 0.004727677 0.0070145 0.002995965 0.005784826 0 0.003331767
X 0.005495986 0.008415487 0.003807673 0.00552374 0.002361458 0.005504102 0.000000805 0.002746723
X 0.005209265 0.008041805 0.003572746 0.005247395 0.002243573 0.005357235 0.0000016 0.002665558
X 0.007467104 0.010856364 0.004896178 0.008258422 0.003086705 0.00341522 0.00000285 0.002702047
Y 0.007670113 0.00940323 0.006406508 0.007372615 0.003627189 0.001986754 0.0000465 0.002585564
Y 0.004686043 0.00726605 0.003055345 0.005017251 0.002003367 0.003900496 0.000000476 0.002309116
Y 0.004177442 0.006972389 0.002680084 0.00474762 0.001885973 0.004097005 0.000000662 0.002295276
Y 0.004475911 0.006846188 0.003625686 0.004221453 0.002829967 0.002831975 0.00000357 0.001636054
Y 0.005848798 0.008090652 0.00340937 0.006071063 0.003104326 0.003234079 0.000000615 0.003722661
Y 0.006518662 0.009792935 0.004230156 0.007402922 0.002677034 0.002810624 0.000000494 0.002678868
Y 0.005428432 0.008254325 0.003481542 0.006025152 0.002306644 0.002731699 0.0000341 0.002559538
Y 0.006138387 0.007997736 0.003884782 0.005445355 0.003097547 0.003177233 0.0000197 0.003667534
Y 0.005268127 0.006967856 0.003245438 0.004784031 0.002785673 0.003147425 0.0000161 0.003360895
Y 0.006824798 0.008643139 0.00441859 0.006040691 0.003519989 0.003252144 0.0000123 0.003866648
Y 0.006756669 0.008882524 0.004407434 0.006087051 0.003316964 0.0038456 0.00000907 0.003794542
Y 0.006766808 0.008916508 0.004425926 0.006133224 0.003349647 0.00381514 0.0000122 0.003794175
Y 0.005288403 0.006397465 0.003993784 0.004615067 0.002988219 0.00219577 0.000224752 0.002179541
Y 0.007064576 0.010323695 0.00479257 0.007002344 0.003084699 0.005404821 0.00000601 0.003126432
Y 0.004992499 0.007830614 0.003199636 0.005100254 0.002196152 0.004706792 0.0000291 0.002574521
Y 0.007285894 0.009257734 0.004756352 0.006956334 0.003740338 0.002541691 0.0000017 0.003785755
Y 0.007284548 0.009060781 0.004695172 0.006907381 0.003923092 0.00237505 0.00000764 0.004050348
Y 0.00502541 0.006910243 0.00368707 0.004952021 0.003261628 0.002949114 0.000131343 0.002590292
Y 0.005605946 0.008788954 0.003741203 0.006023171 0.002442795 0.004465909 0.000000421 0.002661231
Y 0.003618486 0.006465109 0.002340945 0.004184876 0.001724263 0.003914174 0.00000106 0.002229038
Y 0.004858636 0.008062734 0.00315832 0.005736985 0.002185119 0.003723115 0.00000306 0.002509759
Z 0.005107876 0.008322495 0.003352967 0.005921168 0.002309924 0.003758071 0.00000206 0.002624568
Z 0.003509392 0.005521583 0.002485114 0.003173729 0.00126778 0.00355057 0.0000431 0.001887588
Z 0.003865434 0.005767412 0.002810001 0.003372551 0.001460574 0.003648029 0.0000457 0.001909999
Z 0.005177201 0.007826825 0.003958008 0.004716213 0.002546243 0.00398816 0.00000473 0.00242293
Z 0.006601694 0.009499528 0.004681797 0.00669723 0.003016417 0.004643877 0.00000777 0.003081804
然后,我用下面的方法做了一个图,你可以在附件中看到(Figure1)。
library(reshape2)
library(ggplot)
DvsO = read.table("Disease_vs_Outcome.txt", header = TRUE)
DvsO <- data.frame(DvsO)
DvsO <- melt(DvsO, id.vars="Disease")
ggplot(DvsO, aes(Disease, value, fill=Disease)) +
geom_violin() + geom_boxplot(width=.5) + facet_wrap(~variable,scales="free") + scale_fill_manual(values=c("#CC6666", "#00CC00","#3399FF"))
但是,我想生成一个像这样的图 (Figure2)。基本上,我想将图形翻转成水平并将所有数据放在一个面板中。
如果你能帮我解决这个问题,我会很高兴吗?非常感谢您。
您可以使用 coord_flip
翻转方框(但不能使用自由秤)。我建议保留刻面,但改用 facet_grid
。制作一个面板要困难得多。如果需要,您可以调整刻面的外观。
(您可能可以取消此图中的 y 轴。)
ggplot(DvsO, aes(Disease, value, fill=Disease)) +
geom_violin() +
geom_boxplot(width=.5) +
facet_grid(variable~.) +
scale_fill_manual(values=c("#CC6666", "#00CC00","#3399FF")) +
coord_flip() +
theme_bw() +
theme(panel.margin = unit(0, "lines"))
编辑:
还有积分(你也可以看看geom_dotplot
):
ggplot(DvsO, aes(Disease, value, fill = Disease)) +
geom_violin(color = NA, alpha = 0.8) +
geom_point(position = position_jitter(w = 0.5, h = 0), alpha = 0.7) +
facet_grid(variable~.) +
scale_fill_manual(values=c("#CC6666", "#00CC00","#3399FF")) +
coord_flip() +
theme_bw() +
theme(panel.margin = unit(0, "lines"),
axis.text.y = element_blank(),
axis.ticks.y = element_blank(),
axis.title.y = element_blank())
我有一个数据,其中包含 3 种不同的疾病状况及其几种结果。疾病在第一列,结果从第二列开始命名。请看附件中的数据。
Disease A B C D E F G H
X 0.001527882 0.003459413 0.000648574 0.002127627 0.000847073 0.002628663 0.00000156 0.001697012
X 0.001848781 0.003641997 0.000876108 0.0024079 0.001061678 0.00253612 0.00000191 0.001761288
X 0.004304498 0.005887634 0.003197471 0.003581047 0.002125073 0.003125686 0.000025 0.001974246
X 0.006675181 0.00784345 0.004085157 0.005653283 0.003118116 0.001897106 0.000011 0.004055166
X 0.006206229 0.007407223 0.003775627 0.005398474 0.002903612 0.001901196 0.0000138 0.003867669
X 0.008291067 0.010172375 0.005316099 0.007294589 0.003807516 0.002711993 0.00000431 0.004335257
X 0.00405819 0.006540146 0.002686623 0.004762546 0.00163977 0.003309515 0.00000789 0.001957311
X 0.0067902 0.010219971 0.004727677 0.0070145 0.002995965 0.005784826 0 0.003331767
X 0.005495986 0.008415487 0.003807673 0.00552374 0.002361458 0.005504102 0.000000805 0.002746723
X 0.005209265 0.008041805 0.003572746 0.005247395 0.002243573 0.005357235 0.0000016 0.002665558
X 0.007467104 0.010856364 0.004896178 0.008258422 0.003086705 0.00341522 0.00000285 0.002702047
Y 0.007670113 0.00940323 0.006406508 0.007372615 0.003627189 0.001986754 0.0000465 0.002585564
Y 0.004686043 0.00726605 0.003055345 0.005017251 0.002003367 0.003900496 0.000000476 0.002309116
Y 0.004177442 0.006972389 0.002680084 0.00474762 0.001885973 0.004097005 0.000000662 0.002295276
Y 0.004475911 0.006846188 0.003625686 0.004221453 0.002829967 0.002831975 0.00000357 0.001636054
Y 0.005848798 0.008090652 0.00340937 0.006071063 0.003104326 0.003234079 0.000000615 0.003722661
Y 0.006518662 0.009792935 0.004230156 0.007402922 0.002677034 0.002810624 0.000000494 0.002678868
Y 0.005428432 0.008254325 0.003481542 0.006025152 0.002306644 0.002731699 0.0000341 0.002559538
Y 0.006138387 0.007997736 0.003884782 0.005445355 0.003097547 0.003177233 0.0000197 0.003667534
Y 0.005268127 0.006967856 0.003245438 0.004784031 0.002785673 0.003147425 0.0000161 0.003360895
Y 0.006824798 0.008643139 0.00441859 0.006040691 0.003519989 0.003252144 0.0000123 0.003866648
Y 0.006756669 0.008882524 0.004407434 0.006087051 0.003316964 0.0038456 0.00000907 0.003794542
Y 0.006766808 0.008916508 0.004425926 0.006133224 0.003349647 0.00381514 0.0000122 0.003794175
Y 0.005288403 0.006397465 0.003993784 0.004615067 0.002988219 0.00219577 0.000224752 0.002179541
Y 0.007064576 0.010323695 0.00479257 0.007002344 0.003084699 0.005404821 0.00000601 0.003126432
Y 0.004992499 0.007830614 0.003199636 0.005100254 0.002196152 0.004706792 0.0000291 0.002574521
Y 0.007285894 0.009257734 0.004756352 0.006956334 0.003740338 0.002541691 0.0000017 0.003785755
Y 0.007284548 0.009060781 0.004695172 0.006907381 0.003923092 0.00237505 0.00000764 0.004050348
Y 0.00502541 0.006910243 0.00368707 0.004952021 0.003261628 0.002949114 0.000131343 0.002590292
Y 0.005605946 0.008788954 0.003741203 0.006023171 0.002442795 0.004465909 0.000000421 0.002661231
Y 0.003618486 0.006465109 0.002340945 0.004184876 0.001724263 0.003914174 0.00000106 0.002229038
Y 0.004858636 0.008062734 0.00315832 0.005736985 0.002185119 0.003723115 0.00000306 0.002509759
Z 0.005107876 0.008322495 0.003352967 0.005921168 0.002309924 0.003758071 0.00000206 0.002624568
Z 0.003509392 0.005521583 0.002485114 0.003173729 0.00126778 0.00355057 0.0000431 0.001887588
Z 0.003865434 0.005767412 0.002810001 0.003372551 0.001460574 0.003648029 0.0000457 0.001909999
Z 0.005177201 0.007826825 0.003958008 0.004716213 0.002546243 0.00398816 0.00000473 0.00242293
Z 0.006601694 0.009499528 0.004681797 0.00669723 0.003016417 0.004643877 0.00000777 0.003081804
然后,我用下面的方法做了一个图,你可以在附件中看到(Figure1)。
library(reshape2)
library(ggplot)
DvsO = read.table("Disease_vs_Outcome.txt", header = TRUE)
DvsO <- data.frame(DvsO)
DvsO <- melt(DvsO, id.vars="Disease")
ggplot(DvsO, aes(Disease, value, fill=Disease)) +
geom_violin() + geom_boxplot(width=.5) + facet_wrap(~variable,scales="free") + scale_fill_manual(values=c("#CC6666", "#00CC00","#3399FF"))
但是,我想生成一个像这样的图 (Figure2)。基本上,我想将图形翻转成水平并将所有数据放在一个面板中。
如果你能帮我解决这个问题,我会很高兴吗?非常感谢您。
您可以使用 coord_flip
翻转方框(但不能使用自由秤)。我建议保留刻面,但改用 facet_grid
。制作一个面板要困难得多。如果需要,您可以调整刻面的外观。
(您可能可以取消此图中的 y 轴。)
ggplot(DvsO, aes(Disease, value, fill=Disease)) +
geom_violin() +
geom_boxplot(width=.5) +
facet_grid(variable~.) +
scale_fill_manual(values=c("#CC6666", "#00CC00","#3399FF")) +
coord_flip() +
theme_bw() +
theme(panel.margin = unit(0, "lines"))
编辑:
还有积分(你也可以看看geom_dotplot
):
ggplot(DvsO, aes(Disease, value, fill = Disease)) +
geom_violin(color = NA, alpha = 0.8) +
geom_point(position = position_jitter(w = 0.5, h = 0), alpha = 0.7) +
facet_grid(variable~.) +
scale_fill_manual(values=c("#CC6666", "#00CC00","#3399FF")) +
coord_flip() +
theme_bw() +
theme(panel.margin = unit(0, "lines"),
axis.text.y = element_blank(),
axis.ticks.y = element_blank(),
axis.title.y = element_blank())