簡體   English   中英

將數據縮放到R中的輔助軸(ggplot2)

[英]Scaling data to secondary axis in R (ggplot2)

我正在嘗試使用ggplot2構建折線圖,其中我希望有2條線,每條線適應於不同的軸。 我正在嘗試以下代碼(其中df4是我的數據幀):

p1 = ggplot(df4, mapping = aes(x=taxon, y=cov, group = 1, colour = "Coverage", xlab("Cover"))) + 
geom_line() +
labs (x = "Taxon", y = "Coverage") +
geom_line(aes(y=depth, colour = "Depth")) +
theme(axis.text.x = element_text(angle = 75, hjust= 1, vjust = 1)) +
scale_colour_manual(values = c("navyblue", "green4")) +
scale_y_continuous(sec.axis = sec_axis(~./4, name = "Depth"))

這樣,我就可以構建一個包含2個y軸和2條線的圖表,但是兩條線都適合於主要的y軸(輔助軸在那兒,但是沒用)。 是否有一個參數可以要求我的數據沿該軸運動?

藍線值僅會一直到1,因此它們應適應於輔助軸

這是我的數據的一個示例:

structure(list(taxon = structure(c(80L, 57L, 74L, 32L, 1L, 3L, 
41L, 9L, 70L, 12L), .Label = c("c__Tremellomycetes", "f__Listeriaceae", 
"f__Saccharomycetaceae", "g__Escherichia", "g__Klebsiella", "g__Pseudomonas", 
"g__Saccharomyces", "g__Salmonella", "g__Staphylococcus",    "s__Bacillus_amyloliquefaciens", 
"s__Bacillus_phage_phi105", "s__Bacillus_siamensis", "s__Bacillus_sp_JS", 
"s__Bacillus_subtilis", "s__Bacillus_vallismortis", "s__Citrobacter_sp_30_2", 
"s__Cronobacter_phage_ENT47670", "s__Enterobacter_cancerogenus", 
"s__Enterobacteria_phage_BP_4795", "s__Enterobacteria_phage_cdtI", 
"s__Enterobacteria_phage_ES18", "s__Enterobacteria_phage_fiAA91_ss", 
"s__Enterobacteria_phage_HK629", "s__Enterobacteria_phage_IME10", 
"s__Enterobacteria_phage_lambda", "s__Enterobacteria_phage_mEp237", 
"s__Enterobacteria_phage_mEp460", "s__Enterobacteria_phage_Min27", 
"s__Enterobacteria_phage_P22", "s__Enterobacteria_phage_YYZ_2008", 
"s__Enterococcus_faecalis", "s__Enterococcus_gilvus", "s__Enterococcus_phage_phiEf11", 
"s__Enterococcus_phage_phiFL1A", "s__Enterococcus_phage_phiFL3A", 
"s__Escherichia_coli", "s__Escherichia_phage_HK639", "s__Escherichia_phage_P13374", 
"s__Lactobacillus_fermentum", "s__Listeria_innocua", "s__Listeria_ivanovii", 
"s__Listeria_marthii", "s__Listeria_monocytogenes", "s__Listeria_phage_2389", 
"s__Listeria_phage_A118", "s__Listeria_phage_A500", "s__Paenibacillus_sp_ICGEB2008", 
"s__Phage_Gifsy_1", "s__Phage_Gifsy_2", "s__Pseudomonas_aeruginosa", 
 "s__Pseudomonas_mendocina", "s__Pseudomonas_phage_B3", "s__Pseudomonas_phage_D3", 
 "s__Pseudomonas_phage_DMS3", "s__Pseudomonas_phage_F10", "s__Pseudomonas_phage_F116", 
 "s__Pseudomonas_phage_PAJU2", "s__Pseudomonas_phage_Pf1",   "s__Pseudomonas_phage_phi297", 
"s__Pseudomonas_sp_2_1_26", "s__Pseudomonas_sp_P179",  "s__Salmonella_enterica", 
"s__Salmonella_phage_Fels_1", "s__Salmonella_phage_Fels_2",  "s__Salmonella_phage_SETP13", 
"s__Salmonella_phage_ST64B", "s__Shigella_phage_Sf6", "s__Staphylococcus_aureus", 
"s__Staphylococcus_phage_42E", "s__Staphylococcus_phage_55", 
"s__Staphylococcus_phage_80alpha", "s__Staphylococcus_phage_P954", 
"s__Staphylococcus_phage_phi2958PVL", "s__Staphylococcus_phage_phiMR25", 
"s__Staphylococcus_phage_phiN315", "s__Staphylococcus_phage_phiNM3", 
"s__Staphylococcus_phage_phiPVL_CN125", "s__Staphylococcus_phage_phiPVL108", 
"s__Staphylococcus_phage_PT1028", "s__Staphylococcus_phage_StauST398_1", 
"s__Staphylococcus_phage_StauST398_3",  "s__Staphylococcus_prophage_phiPV83", 
"s__Stx2_converting_phage_1717", "s__Stx2_converting_phage_86"
), class = "factor"), cov = c(0.987654320987654, 0.99685534591195, 
0.994535519125683, 0.147003745318352, 0.390923694779116,  0.92831541218638, 
0.99079754601227, 0.993055555555556, 0.497512437810945, 0.58144695960941
), depth = c(1.68148148148148, 0.99685534591195, 0.994535519125683, 
0.147003745318352, 0.390923694779116, 0.92831541218638, 0.99079754601227, 
1.34722222222222, 0.497512437810945, 0.58144695960941)), .Names =         c("taxon", 
"cov", "depth"), row.names = c(40L, 10L, 58L, 44L, 7L, 55L, 29L, 
13L, 2L, 53L), class = "data.frame")

您只需要將“深度” geom_line乘以4即可:

ggplot(df4, mapping = aes(x=taxon, y=cov, group = 1, colour = "Coverage", xlab("Cover"))) + 
geom_line() +
labs (x = "Taxon", y = "Coverage") +
geom_line(aes(y=depth * 4, colour = "Depth")) +
theme(axis.text.x = element_text(angle = 75, hjust= 1, vjust = 1)) +
scale_colour_manual(values = c("navyblue", "green4")) +
scale_y_continuous(sec.axis = sec_axis(~./4, name = "Depth"))

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM