I am trying to plot scatter 3d plot for 3 axis. I used package:
library(scatterplot3d)
and this my dataframe:
dput(gene)
structure(list(rsid = c("geneid1", "geneid2", "geneid3", "geneid4",
"geneid5", "geneid6", "geneid7", "geneid8", "geneid9", "geneid10",
"geneid11", "geneid12", "geneid13", "geneid14", "geneid15", "geneid16",
"geneid17", "geneid18", "geneid19", "geneid20", "geneid21", "geneid22",
"geneid23", "geneid24", "geneid25", "geneid26", "geneid27", "geneid28",
"geneid29", "geneid30", "geneid31", "geneid32", "geneid33", "geneid34",
"geneid35", "geneid36", "geneid37", "geneid38", "geneid39", "geneid40",
"geneid41", "geneid42", "geneid43", "geneid44", "geneid45", "geneid46",
"geneid47", "geneid48", "geneid49", "geneid50", "geneid51", "geneid52",
"geneid53", "geneid54", "geneid55", "geneid56", "geneid57", "geneid58",
"geneid59", "geneid60", "geneid61", "geneid62", "geneid63", "geneid64",
"geneid65", "geneid66", "geneid67", "geneid68", "geneid69", "geneid70",
"geneid71", "geneid72", "geneid73", "geneid74", "geneid75", "geneid76",
"geneid77", "geneid78", "geneid79", "geneid80", "geneid81", "geneid82",
"geneid83", "geneid84", "geneid85", "geneid86", "geneid87", "geneid88",
"geneid89", "geneid90", "geneid91", "geneid92", "geneid93", "geneid94",
"geneid95", "geneid96", "geneid97", "geneid98", "geneid99", "geneid100",
"geneid101", "geneid102", "geneid103", "geneid104", "geneid105",
"geneid106", "geneid107", "geneid108", "geneid109", "geneid110",
"geneid111", "geneid112", "geneid113", "geneid114", "geneid115",
"geneid116", "geneid117", "geneid118", "geneid119", "geneid120",
"geneid121", "geneid122", "geneid123", "geneid124", "geneid125",
"geneid126", "geneid127", "geneid128"), empiricalpvalue = c(6.13461252366445e-122,
1.16535620114822e-84, 8.70333130656012e-95, 6.21764431355086e-78,
1.3419299160444e-104, 2.1205949537435e-87, 8.88049533513058e-82,
2.37291630796694e-59, 6.89525879641339e-87, 9.15023133356126e-110,
3.38640359272591e-95, 6.46902643155203e-97, 4.03813386099403e-68,
9.02172515192496e-79, 1.49057561236869e-76, 3.75651498115438e-71,
1.21242518225615e-92, 3.80900176762236e-112, 3.19156461606367e-90,
3.12205363999601e-112, 3.75219679463562e-76, 5.79336944438183e-102,
1.16088756611029e-92, 4.79478718145423e-71, 4.46873500738817e-68,
3.61567839124827e-90, 2.73461291112396e-50, 5.31076204704237e-82,
4.78173518650222e-71, 1.47603869715026e-76, 5.31076204704237e-82,
1.34296126323826e-104, 1.47603869715026e-76, 4.78173518650222e-71,
4.18664557737661e-102, 1.23726835252678e-47, 1.81409531313344e-87,
1.81409531313344e-87, 9.17728799649733e-77, 1.14037287289173e-84,
6.85171121323749e-115, 9.64380530301843e-85, 1.88308874461263e-97,
4.54315679209976e-84, 1.15617930948075e-57, 2.61302778878597e-87,
1.59617378477945e-107, 6.67041379381125e-97, 2.91012034679369e-73,
6.42709856844799e-70, 4.77978670784383e-71, 3.73579797895449e-90,
2.54822788576734e-84, 5.32401346280141e-82, 1.86531289438543e-87,
1.27417263340724e-84, 8.47051451192377e-87, 1.67865103963281e-99,
1.65173041055351e-87, 1.60318019118551e-92, 1.68953511584346e-97,
1.61821544439548e-87, 1.64030885809042e-76, 2.58826953869118e-94,
4.15415840174316e-102, 3.66836413482857e-90, 9.75351878266387e-85,
2.15813794646134e-87, 5.20166809636258e-98, 1.45040537115182e-92,
3.92026467069203e-76, 7.02257254289247e-80, 7.88167077050651e-100,
5.98528923250908e-89, 2.6123159641609e-65, 4.58668502343678e-72,
3.3269638981147e-65, 3.93215270864855e-88, 4.94770292217309e-90,
2.61051540730913e-93, 4.82058308970484e-65, 4.03813386099403e-68,
4.9040562801298e-68, 1.64625360058074e-97, 1.18180478789365e-67,
2.37606653980273e-95, 6.68678557257316e-115, 2.83305168489427e-76,
4.47438785926932e-84, 7.83381751772824e-100, 2.56336302630105e-62,
1.6645346622893e-97, 1.49294643386617e-92, 1.30971986837447e-76,
2.68991872345451e-62, 4.63183258997433e-71, 1.88138224471355e-97,
1.81344406130667e-38, 4.50067096666545e-95, 1.28960110233455e-87,
8.39303827966421e-74, 1.75361636514329e-50, 4.36558718606554e-95,
4.23200952395284e-82, 1.77477358560346e-79, 4.4667933690595e-79,
7.00055719563781e-82, 1.31125522310481e-87, 2.7358859862243e-56,
7.98709105347624e-100, 1.15689932217416e-83, 3.17870997682453e-90,
2.5665694961431e-62, 1.06323967424683e-84, 4.9588998029082e-95,
1.73555014818939e-112, 4.76922555104304e-82, 1.29059454331569e-87,
2.88582096884338e-92, 7.486055585569e-85, 4.43940003277464e-67,
8.11453165153395e-107, 3.79101954373641e-76, 2.067304055207e-101,
3.147003601088e-75, 2.3221340846221e-114, 7.49267907095058e-105,
2.84518694290315e-52), pvalue = c(0.68588704183079, 0.68588704183079,
0.220127260333427, 0.69423733480229, 0.490693614490964, 0.549166912433013,
0.321119909131389, 0.470400199588203, 0.11068697727484, 0.492304167343793,
0.977843368740407, 0.773842773679014, 0.0274086629991561, 0.0345100898198675,
0.156009865827704, 0.177229984361821, 0.00334568549642378, 0.0246216153164539,
0.00070484993149725, 0.00339864494961824, 0.00095625626066833,
0.542502183036992, 0.0115397045957251, 0.0115397045957251, 0.318141606666907,
0.00764434227225787, 0.00088342793282982, 0.00764434227225787,
0.00764434227225787, 0.00764434227225787, 0.00764434227225787,
0.00764434227225787, 0.00764434227225787, 0.00764434227225787,
0.00764434227225787, 0.00764434227225787, 0.00764434227225787,
0.00764434227225787, 0.227553616807578, 0.00307816889794103,
0.810397696543416, 0.00481535382790678, 0.00481535382790678,
0.567426075472232, 0.0709536216660615, 0.388300338453881, 0.723454085678846,
0.17440795565029, 0.566179572879549, 0.0956525104821812, 0.104465873612382,
0.702561306710734, 0.0976196418847593, 0.106833472632844, 0.106833472632844,
0.399547088387142, 0.859507690578278, 0.0896054864434418, 0.0197881057481875,
0.674477409919487, 0.893368122468456, 0.259198799140294, 0.0078277208585352,
0.00660445466557924, 8.93935575744768e-07, 8.93935575744768e-07,
0.0215191532899952, 0.00089969281273726, 1.71318094466417e-11,
1.93744902020634e-06, 0.196919576816204, 0.00026308488486724,
0.188048768850889, 3.37730930462203e-06, 1.71497115213503e-06,
1.95606081221237e-09, 0.0215191532899952, 0.344393628448912,
1.10524547799898e-06, 0.0002118690694374, 0.230805625978978,
0.312040934992537, 0.950614873380497, 0.973950437945092, 0.154323417882195,
0.78229924581066, 0.0197898099613507, 0.126150764855425, 0.0140779029458078,
0.0451687447107746, 0.0451687447107746, 0.32952913111269, 0.933231564503113,
0.318911210914388, 0.0508011296179234, 0.0435980949615047, 0.0435980949615047,
0.0150579714577512, 0.0788408082086297, 0.0697326429444134, 0.355093197783839,
0.191699208310582, 0.355093197783839, 0.107475347310097, 0.319442636540046,
0.499040970288875, 0.289895623821287, 0.289895623821287, 0.0715147992163933,
0.0823680777596502, 0.0435914001980873, 0.238698857794745, 0.238698857794745,
0.238698857794745, 0.238698857794745, 0.032954479808064, 0.14377893219712,
0.0957562786854422, 0.0957562786854422, 0.0957562786854422, 0.382084461781353,
0.2559848955185, 0.183032024396735, 0.0344081978664664, 0.383607993152143,
0.269176925197184, 0.0809293638661076, 0.0648895903300949), maxR2 = c(1,
1, 0.24646074832345, 0.318529494648516, 0.537361473230975, 0.487775682828868,
0.487775682828868, 0.537361473230975, 0.318529494648516, 0.195526010871951,
0.144411290687557, 0.42495871885722, 0.42495871885722, 0.688343016856399,
0.852092352092352, 0.688343016856399, 0.822846645483939, 0.822846645483939,
0.92467673120711, 0.92467673120711, 0.133336040413401, 0.241614449882966,
1, 1, 0.222225540135554, 1, 0.338767571798379, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 0.852092352092352, 0.81589109807783, 0.247206550359501,
1, 1, 0.298914213604681, 0.269548068682413, 0.359274829666961,
0.597926514989907, 0.597926514989907, 0.359274829666961, 0.14706412437914,
0.365428598598603, 0.385, 0.520124160669906, 1, 1, 0.239520969186289,
0.118172253993026, 0.246651718484139, 0.203669029422643, 0.239822084968639,
0.224561807135871, 0.219837685176587, 0.355308267456096, 0.352300297299731,
1, 1, 1, 0.69144988013248, 0.870624894382649, 0.71474839040327,
0.126707938714564, 0.68463075898378, 0.239822084968639, 0.971008312455224,
0.971008312455224, 0.870624894382649, 1, 0.173965505954282, 0.634715421497106,
0.663625095509327, 0.173154748259788, 0.777646647937935, 0.777646647937935,
0.494829318691275, 0.669948731345372, 0.286608298357456, 0.669948731345372,
0.257854250390985, 0.239520969186289, 1, 1, 0.191448862824438,
0.184880399183239, 0.160153297583809, 0.98254847816179, 1, 1,
0.940413080805106, 0.571737457140003, 0.940413080805106, 1, 0.162156384275673,
1, 0.243533199479121, 0.155160539315454, 0.671263122385402, 1,
1, 0.205198409129552, 0.210437753515572, 0.189411423519086, 1,
1, 1, 1, 0.296376406781993, 0.923490988913509, 1, 1, 1, 0.241614449882966,
0.169138820306718, 0.148054212558727, 0.223841261627209, 0.167433583712982,
0.262610336629144, 0.385, 0.20449643660452)), row.names = c(NA,
-128L), class = c("tbl_df", "tbl", "data.frame"))
When I run this code it gives me an error:
scatterplot3d(gene$pvalue,gene$empiricalpvalue, gene$maxR2)
Error in plot.window(c(x1, x2), c(z.min, z.max + yz.f * y.max), asp = asp) :
need finite 'xlim' values
I checked this particular error in google and it corresponds to having NA values in dataframe but In my case I don't have any NA values. I have added my entire dataset for reference. Is there any way to solve this issue or any other package for plotting 3d scatter plot. Thank you.
All your empirical p values are very small:
range(gene$empiricalpvalue)
#> [1] 6.134613e-122 1.813444e-38
The code inside scatterplot3D
takes this range, converts it into a sequence of pretty breaks, then takes the difference between the first two breaks as the scaling factor for the y axis. Unfortunately, it rounds this scaling factor to 12 decimal places. This all happens in the lines:
y.prty <- pretty(y.range, n = lab[2],
min.n = max(1, min(0.5 * lab[2], p.lab[2])))
y.scal <- round(diff(y.prty[1:2]), digits = 12)
Since your scaling factor is about 10^-39, rounding it to 12 decimal places rounds it down to 0. When the y values are scaled for plotting, they are therefore divided by 0. This makes them all Inf
, so when the lower level graphic functions try to plot them, there are no finite values to plot.
If you take the log of your p values, this problem disappears:
scatterplot3d(log10(gene$pvalue), log10(gene$empiricalpvalue), gene$maxR2)