【问题标题】:R. Plot points from different columns of dataframe, assigning 1 color per columnR. 绘制来自数据框不同列的点,每列分配 1 种颜色
【发布时间】:2021-08-21 21:32:37
【问题描述】:

我想使用 R 中的 plot() 函数从数据帧 A 绘制图。A 中的列称为“SNP_pos”、“X”,然后是 16 列称为“p0.5”、“p1.5” ","p2.5",..."p15.5"。

plot(A$SNP_pos, -log10(A$p1.5),
   type="p", cex = 0.6, pch = 16,
   col="blue", 
   lwd=0.1,
   frame.plot = F,
   xaxt = 'n',
   ylim = c(0, 8),
   las = 2,
   xlim = c(min(A$SNP_pos), max(A$SNP_pos)),
   cex.lab=1, 
   ann = FALSE, 
   mgp = c(3, 0.8, 0)) 

我想使用 points() 函数绘制表示 "p0.5","p1.5","p2.5",..."p15.5" 列中的值的点,每列有 1 种颜色来自 R 图形。为了从名为“plasma”的调色板中获得 16 种颜色,我使用了 viridis 包。为了给每一列分配一种颜色,我使用了 foreach 包。

可能有更简单的方法,但这是我制作的脚本:

library(foreach)
library(viridis)

INT = seq(0.5,15.5,1)
colID = viridis_pal(option = "plasma")(16)

foreach(k = INT, j = colID) %do% {
  INT2 = A$get(paste0("p",k,sep=""))  
  points(-log10(A$INT2),col=j, pch=19, cex=0.4)
}

但是,不知何故,我的脚本无法识别列的名称 (get(paste0("p",k,sep="")))

这是一个使用 dput(A) 从 A 中获得的样本:

结构(列表(p0.5 = c(0.242747188094946, 0.168997486361476, 0.107928390753494, 0.00051908418471065, 0.148653246954464, 0.433668277360466, 0.275291500174496, 0.899508301641167, 0.457700101660136, 0.159278241228698, 0.105476048060019, 0.0957898181759544, 0.0262806475294918, 0.20386786083848, 0.0135962839615987, 0.0562814320632579, 0.0761538252424941, 0.11445675670503 ), p1.5 = c(0.0456675606337706, 0.579032583070177, 0.0733987371701725, 0.0125483229728762, 0.0628715045603653, 0.211266478201916, 0.110695151122545, 0.243109951551235, 0.0210778532524462, 0.0493031519980267, 0.0390144011015269, 0.0304772224622842, 0.0084556138719978, 0.0111889644811375, 0.00158950157629228, 0.0899572299188477, 0.117447319097037, 0.0403839701897273), p2.5 = c(0.106205033576986, 0.999008499893865, 0.0000977605223585761, 0.0000222204471434021, 0.0608965716779278, 0.120029817275325, 0.265571691424294, 0.553076531536749, 0.122071577513883, 0.0142361473839313, 0.0140659128442708, 0.0106173904925838, 0.0100709738419846, 0.0220269042478114, 0.0197389283217971, 0.056918781795781, 0.0843907457940626, 0.0065953679321777), p3.5 = c(0.0949379614316481, 0.6576913449417, 0.357953467962908, 0.673495175075545, 0.00356364218471085, 0.00579718014023882, 0.100106211569328, 0.0158453918358466, 0.0969391239180496, 0.0142849538835522, 0.010588950662722, 0.00841341473657932, 0.0107418165679845, 0.00342963776145622, 0.00248045395676769, 0.0256439166722159, 0.0379307961204795, 0.00520668432606975), p4.5 = c(0.0000187175832404615, 0.0449205528979275, 0.454245793136244, 0.625484812568163, 0.00087144135901471, 0.00125393954966476, 0.000495356005020231, 0.00853418997106188, 0.0860658004805283, 0.0138964693607855, 0.00778626888227587, 0.00880374257771237, 0.00992849326319861, 0.00236193358591027, 0.000317125830225305, 0.00270570068269156, 0.00268651630233588, 0.016006809066345), p5.5 = c(0.0297229014556236, 0.450573991501786, 0.538565537374086, 0.199241650260579, 0.140114219338775, 0.298810808152817, 0.457059301374272, 0.000465970378076238, 0.015596915949386, 0.00498096604293199, 0.00180173547360725, 0.00180173547360725, 0.00241248090553604, 0.100258152124521, 0.0347312413053782, 0.0259487420621233, 0.029439670274164, 0.0509346154635958), p6.5 = c(0.00157124564715232, 0.00617602657108606, 0.40323546403784, 0.975963386485613, 0.000498705229682038, 0.00197961640689226, 0.00607507536590394, 0.00475879649921192, 0.0432054681761673, 0.000208405926305886, 0.000124485834074587, 0.000104249584130051, 0.000154505394307958, 0.000466823941774422, 0.00014809982985565, 0.000957049520089973, 0.000907016506181029, 0.000638562546332883 ), p7.5 = c(0.00967614058865758, 0.00611666067998298, 0.344939438378035, 0.829946421184631, 0.0000872148308332329, 0.0010787446205654, 0.00099396409402685, 0.000185220001498869, 0.00445122847464564, 0.0000699305779467999, 0.0000270797969253489, 0.0000395841851201029, 0.0000351568889193048, 0.000308108117176226, 0.0000505880748474765, 0.0000182107980767294, 0.0000307213569343469, 0.0000538257344596745 ), p8.5 = c(0.0298272314697819, 0.00439975455976159, 0.615119474893023, 0.737847234479775, 0.00000260534870255568, 0.0000806900093438783, 0.0000951477742356736, 0.000792707417353214, 0.00612215906548817, 0.00032734137698918, 0.000257161919558846, 0.000372124861505317, 0.000146537968590819, 0.000549732712368789, 0.000418621454407308, 0.000245993613431499, 0.000379405893229818, 0.0000736041041229257 ), p9.5 = c(0.0211527099658549, 0.0000934929361262732, 0.82437218981407, 0.519167449006819, 0.000523156922133462, 0.00258360415905021, 0.00204220285347531, 0.0000154562053722482, 0.00566515791218741, 0.000103533046675889, 0.0000698932530663413, 0.00011717001113944, 0.0000664828013933368, 0.0000997250603534792, 0.000357450389587003, 0.000716062592119114, 0.000846881645964889, 0.000451224448732578 ), p10.5 = c(0.029971421047914, 0.00268695456539587, 0.424557917592327, 0.915046515914916, 0.000568515266303506, 0.00245516212053905, 0.00929053858074703, 0.00415983684212026, 0.0259746272819724, 0.00052532073328366, 0.000590465479955006, 0.00103194578557607, 0.00122815984445129, 0.000698956470929661, 0.00159091618143714, 0.000867824024120008, 0.00124655848935054, 0.000332038074892812 ), p11.5 = c(0.035609130492743, 0.237964075968414, 0.690124238372624, 0.648900366291513, 0.00004710004866214, 0.000275145894207551, 0.00614799286615342, 0.000186840750332432, 0.000914981442505171, 0.165208893610543, 0.115721716938258, 0.13093915642351, 0.118863703039706, 0.0159269747563521, 0.00308345643003936, 0.00862720882125511, 0.0117091662666689, 0.0108686512973407), p12.5 = c(0.00672976815913322, 0.000638938427403905, 0.814337286838706, 0.623969439817503, 0.000807819084297629, 0.00232440718185704, 0.000740458747187747, 0.000728021148772152, 0.0000559657131149375, 0.00978645701481258, 0.0140829048116248, 0.0193192878124661, 0.0498439328612731, 0.00412982514514444, 0.00424479231301975, 0.00196617578444213, 0.00221470494971319, 0.00308388908487704), p13.5 = c(0.0063414607849774, 0.000455425918835152, 0.52835103362498, 0.457946740156627, 0.0151431361797825, 0.0479667906414369, 0.00402089598655567, 0.00408601310637604, 0.00610753504352883, 0.00182377496358575, 0.00180612043092252, 0.00341152291235735, 0.00622315616784477, 0.00136290325730425, 0.00093534946282569, 0.00190275139707705, 0.00264021255779838, 0.00153154541556427 ), p14.5 = c(0.0172886796088735, 0.00262673599171581, 0.75486705783085, 0.861664714​​579806, 0.00442495915096256, 0.0145607545288462, 0.026313481660887, 0.00338158384879001, 0.00324014806350329, 0.00334338760170889, 0.00336113782656065, 0.00618978341717156, 0.0134855539039173, 0.00131871554558236, 0.000970572324960001, 0.000308088006042178, 0.000485416518092221, 0.00039877284691957), p15.5 = c(0.0129036907113826, 0.000768695252300225, 0.857105484361189, 0.652985460943366, 0.0678412616065989, 0.117470700206561, 0.251848121581743, 0.0266333988671643, 0.0597033572250765, 0.00673143398709981, 0.00578628321608891, 0.00862746246608992, 0.118781559566082, 0.00377416600326799, 0.0416466163677339, 0.0114618669238643, 0.0101411929303934, 0.00439323486043991), SNP_pos = 1:18), .Names = c("p0.5", “p1.5”、“p2.5”、“p3.5”、“p4.5”、“p5.5”、“p6.5”、“p7.5”、“p8.5”、 “p9.5”、“p10.5”、“p11.5”、“p12.5”、“p13.5”、“p14.5”、“p15.5”、 "SNP_pos"), row.names = c(NA, -18L), class= c("tbl_df", "tbl", "data.frame"))

请帮忙

【问题讨论】:

  • 如果你使用A[[get(paste0("p",k,sep=""))]]是否有效?
  • 嗨@ktiu,不,它会抛出此消息:{中的错误:任务1失败-“找不到对象'p0.5'”
  • 啊,那就试试:A[[paste0("p",k,sep="")]]
  • @ktiu,现在我得到:{ 中的错误:任务 1 失败 -“数学函数的非数字参数”另外:有 16 个警告(使用 warnings() 查看它们)跨度>
  • 您能否提供带有dput(DATA) 的数据集样本,我们可以复制和粘贴以更好地了解问题和测试解决方案? (见How to make a great R reproducible example

标签: r dataframe plot foreach


【解决方案1】:

这是我将如何使用 tidyrggplot2 解决它:

library(tidyr)
library(ggplot2)

A %>%
  pivot_longer(cols = -SNP_pos) %>%
  ggplot(aes(x = SNP_pos)) +
    geom_point(aes(y = value, color = name)) +
    scale_y_log10()

在基本图形中,这应该可以工作:

purrr::iwalk(INT, \(INT, i) {
  INT2 = A[[paste0("p", INT)]]
  points(seq_along(INT2),
         -log10(INT2),
         col = colID[i],
         pch = 19,
         cex = 0.4)
})

【讨论】:

  • 谢谢@ktiu,但我需要基本图形的解决方案
  • @Lucas 我添加了图形版本。
  • 谢谢@ktiu!。不幸的是我得到:错误:意外'}' in:“pch = 19,cex = 0.4)}”
  • 我无法重现此内容。所有括号和括号匹配。确保在控制台准备就绪时执行命令(仅显示 >
猜你喜欢
  • 2018-09-15
  • 1970-01-01
  • 2016-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-24
相关资源
最近更新 更多