STAT545-UBC / Discussion

Public discussion
38 stars 20 forks source link

How to set fixed y-axis scale for certain rows of facet #494

Open aramcb opened 7 years ago

aramcb commented 7 years ago

I would like to produce a facet that looks like the one below:

image

Note that each row of the facet has a fixed-y but the scale differs for each row.

I have accomplished this by making "fake" data points which are invisible and are the bottom left and top right of each facet. It just seems a bit hacky and has magic numbers.

fake data points (made invisible with alpha = 0 when plotted with ggplot later

df_scale_setter_max <- data.frame(strain = rep(unique(df_group.tidy$strain),5), 
                              variable = c("spd","mag","prob","dist", "dura"),
                              value = c(0.4,1.0000005,1.0000005,1.15, 3.5),
                              train_or_test = "train",
                              tap_num = 30
                              )

df_scale_setter_min <- data.frame(strain = rep(unique(df_group.tidy$strain),5), 
                              variable = c("spd","mag","prob","dist", "dura"),
                              value = c(0,0,0,0, 0),
                              train_or_test = "train",
                              tap_num = 1
)

data-frame Sorry for how big it is (plz bear with me when highlighting)

df_group.tidy <- structure(list(strain = c("DA1371", "DA1371", "DA1371", "DA1371", 
"DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", 
"DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", 
"DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", 
"DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", 
"DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", 
"DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", 
"DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", 
"DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", 
"DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", 
"DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", 
"DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", 
"DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", 
"DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", 
"DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", 
"DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", 
"DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", 
"DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", 
"DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", 
"DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", 
"DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", 
"DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "DA1371", "N2", 
"N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", 
"N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", 
"N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", 
"N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", 
"N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", 
"N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", 
"N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", 
"N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", 
"N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", 
"N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", 
"N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", 
"N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", 
"N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", 
"N2", "N2", "N2", "N2", "N2", "N2"), variable = c("dura", "prob", 
"dist", "mag", "spd", "dura", "prob", "dist", "mag", "spd", "dura", 
"prob", "dist", "mag", "spd", "dura", "prob", "dist", "mag", 
"spd", "dura", "prob", "dist", "mag", "spd", "dura", "prob", 
"dist", "mag", "spd", "dura", "prob", "dist", "mag", "spd", "dura", 
"prob", "dist", "mag", "spd", "dura", "prob", "dist", "mag", 
"spd", "dura", "prob", "dist", "mag", "spd", "dura", "prob", 
"dist", "mag", "spd", "dura", "prob", "dist", "mag", "spd", "dura", 
"prob", "dist", "mag", "spd", "dura", "prob", "dist", "mag", 
"spd", "dura", "prob", "dist", "mag", "spd", "dura", "prob", 
"dist", "mag", "spd", "dura", "prob", "dist", "mag", "spd", "dura", 
"prob", "dist", "mag", "spd", "dura", "prob", "dist", "mag", 
"spd", "dura", "prob", "dist", "mag", "spd", "dura", "prob", 
"dist", "mag", "spd", "dura", "prob", "dist", "mag", "spd", "dura", 
"prob", "dist", "mag", "spd", "dura", "prob", "dist", "mag", 
"spd", "dura", "prob", "dist", "mag", "spd", "dura", "prob", 
"dist", "mag", "spd", "dura", "prob", "dist", "mag", "spd", "dura", 
"prob", "dist", "mag", "spd", "dura", "prob", "dist", "mag", 
"spd", "dura", "prob", "dist", "mag", "spd", "dist", "mag", "spd", 
"dura", "prob", "dist", "mag", "spd", "dura", "prob", "dist", 
"mag", "spd", "dura", "prob", "dist", "mag", "spd", "dura", "prob", 
"dist", "mag", "spd", "dura", "prob", "dist", "mag", "spd", "dura", 
"prob", "dist", "mag", "spd", "dura", "prob", "dist", "mag", 
"spd", "dura", "prob", "dist", "mag", "spd", "dura", "prob", 
"dist", "mag", "spd", "dura", "prob", "dist", "mag", "spd", "dura", 
"prob", "dist", "mag", "spd", "dura", "prob", "dist", "mag", 
"spd", "dura", "prob", "dist", "mag", "spd", "dura", "prob", 
"dist", "mag", "spd", "dura", "prob", "dist", "mag", "spd", "dura", 
"prob", "dist", "mag", "spd", "dura", "prob", "dist", "mag", 
"spd", "dura", "prob", "dist", "mag", "spd", "dura", "prob", 
"dist", "mag", "spd", "dura", "prob", "dist", "mag", "spd", "dura", 
"prob", "dist", "mag", "spd", "dura", "prob", "dist", "mag", 
"spd", "dura", "prob", "dist", "mag", "spd", "dura", "prob", 
"dist", "mag", "spd", "dura", "prob", "dist", "mag", "spd", "dura", 
"prob", "dist", "mag", "spd", "dura", "prob", "dist", "mag", 
"spd", "dura", "prob", "dist", "mag", "spd", "dura", "prob", 
"dist", "mag", "spd", "dura", "prob"), avg = c(2.87333333333333, 
0.768456796935993, 0.420333333333333, 0.252342701349948, 0.238880494345552, 
1.32666666666667, 0.643866060687355, 0.312666666666667, 0.178872724445366, 
0.233918049172257, 1, 0.625837414387978, 0.241333333333333, 0.134856427831428, 
0.231456798462577, 0.953333333333333, 0.565128178664852, 0.212333333333333, 
0.112349970916988, 0.227191761480668, 0.895, 0.525056557187705, 
0.190833333333333, 0.111750870231133, 0.233169166656562, 0.926666666666667, 
0.538496364062866, 0.221, 0.116979253777453, 0.232898271825226, 
0.808333333333333, 0.543352072763837, 0.186666666666667, 0.0957333833751972, 
0.227858305864641, 0.841666666666667, 0.514376959475439, 0.2005, 
0.105852596479538, 0.22017628864917, 0.648333333333333, 0.527706654918384, 
0.1615, 0.0832758317381374, 0.224809679773042, 0.721666666666667, 
0.467831981629538, 0.162666666666667, 0.0792883062557324, 0.218262426951106, 
0.921666666666667, 0.494530217244123, 0.152333333333333, 0.0755020503026074, 
0.210464991229506, 0.848333333333333, 0.501914365884954, 0.1675, 
0.0705041600828366, 0.215940358005779, 0.855, 0.447208034379696, 
0.1595, 0.0757374891753988, 0.207032309413095, 0.761666666666667, 
0.525560333608716, 0.156166666666667, 0.0675505837048091, 0.193243217169909, 
0.828333333333333, 0.399442793090334, 0.141833333333333, 0.0632710965493974, 
0.217066798449777, 3.585, 0.780575108329226, 0.5555, 0.306468487378782, 
0.246667954714345, 1.42833333333333, 0.633524280679482, 0.394, 
0.216559022129187, 0.25921286725297, 1.27666666666667, 0.584620566498853, 
0.337, 0.203255955055856, 0.241107920387832, 1.16, 0.610501280487978, 
0.366666666666667, 0.202725129126023, 0.246626545261304, 1.30833333333333, 
0.541459148693286, 0.226, 0.104933976500188, 0.229435550663384, 
1.145, 0.466336314258515, 0.272166666666667, 0.125932381523182, 
0.226930041833926, 1.13333333333333, 0.458571840136942, 0.285166666666667, 
0.136458826331059, 0.234520724364193, 1.21666666666667, 0.475960506392195, 
0.237666666666667, 0.126400410294862, 0.230376697114936, 1.05166666666667, 
0.409993799846598, 0.236166666666667, 0.10565069286974, 0.238034559607018, 
1.085, 0.533438768622306, 0.205833333333333, 0.100654074512236, 
0.235972435306855, 1.005, 0.409101284125699, 0.195666666666667, 
0.0962171259978405, 0.219238962915655, 0.965, 0.425500955922746, 
0.200666666666667, 0.0946408586203787, 0.225328066906822, 0.918333333333333, 
0.503573687684963, 0.207833333333333, 0.0992510497300955, 0.232159580817555, 
0.916666666666667, 0.438822366922586, 0.1835, 0.0835021262730458, 
0.212592370214771, 0.863333333333333, 0.422273476587493, 0.293333333333333, 
0.144290063809858, 0.235453228043375, 0.564346153846154, 0.424092470247293, 
0.225745713022715, 2.25576923076923, 0.617877332388344, 0.397461538461538, 
0.265208726842184, 0.249717207820594, 1.34692307692308, 0.587519456997999, 
0.306076923076923, 0.174130293016744, 0.234134624681231, 1.13730769230769, 
0.578871629352349, 0.260615384615385, 0.129344169151181, 0.233101138195566, 
0.999230769230769, 0.499347974294787, 0.216423076923077, 0.107451475629652, 
0.217853713129058, 0.934615384615385, 0.488155897985444, 0.233, 
0.107873959228112, 0.230459222479532, 1.04423076923077, 0.46216563633206, 
0.219, 0.0961823077243097, 0.222753386084503, 0.969615384615385, 
0.450634816670971, 0.215615384615385, 0.0844584660724082, 0.222029130714013, 
0.888076923076923, 0.441064645212154, 0.178307692307692, 0.0747835821056454, 
0.211404884715789, 0.846153846153846, 0.405547149330301, 0.175, 
0.0754199053471582, 0.215073518277925, 0.825384615384615, 0.405070305057886, 
0.184384615384615, 0.069702639750255, 0.204855379861847, 0.777307692307692, 
0.354372278602961, 0.186576923076923, 0.0639578401383713, 0.206620135730165, 
0.736538461538462, 0.373479649724983, 0.178576923076923, 0.0666337036262008, 
0.209293928914677, 0.615384615384615, 0.3568779579736, 0.149653846153846, 
0.049244309910699, 0.200271394985875, 0.708846153846154, 0.353060238766025, 
0.144076923076923, 0.0441404043241245, 0.198781095131877, 0.8472, 
0.29995346891798, 0.664615384615385, 0.58350131957752, 0.264235774081345, 
2.27846153846154, 0.764730973710088, 0.596076923076923, 0.458403270949252, 
0.288398301226335, 1.79461538461538, 0.741492343937117, 0.461307692307692, 
0.332009384282199, 0.270207014727872, 1.55653846153846, 0.663723789512132, 
0.392615384615385, 0.256401396645165, 0.259505438839573, 1.40423076923077, 
0.589273896498122, 0.367269230769231, 0.208110597801446, 0.257385006577466, 
1.39230769230769, 0.556599700612114, 0.352115384615385, 0.19639986984893, 
0.25452925564149, 1.34769230769231, 0.528932423919042, 0.342307692307692, 
0.179674227866379, 0.253287455990163, 1.34230769230769, 0.512804235882503, 
0.311038461538462, 0.156934591090685, 0.243788284294876, 1.21076923076923, 
0.495996805696638, 0.281461538461538, 0.124163625889268, 0.242360683940561, 
1.22115384615385, 0.445981797039204, 0.262307692307692, 0.108369713986142, 
0.231409449891701, 1.11384615384615, 0.428513272325052, 0.281115384615385, 
0.114404196799177, 0.240011101196367, 1.08923076923077, 0.392610816679267, 
0.236884615384615, 0.0966175630873092, 0.230864614501007, 0.970769230769231, 
0.414642860719082, 0.236653846153846, 0.101306990956667, 0.23341584190098, 
1.00115384615385, 0.400095446546968, 0.204807692307692, 0.0747349935913542, 
0.229441059559261, 0.851538461538462, 0.380783913187583, 0.195115384615385, 
0.0785116193318076, 0.216964010504021, 0.953076923076923, 0.406825442967519
), SEM = c(0.155813278566937, 0.0555731217478097, 0.0269810633181455, 
0.0185543532004575, 0.0145610657667366, 0.0984434411787353, 0.071900164319077, 
0.0273003866476486, 0.0253803854682725, 0.0101757587350954, 0.0982174458366062, 
0.0435922652763039, 0.0217618422422776, 0.0192350692108155, 0.0107228150264649, 
0.070789201938651, 0.0760137218183814, 0.0155577776190703, 0.0131858169515167, 
0.0114020437647414, 0.0399791612384919, 0.0838402471661717, 0.0247257176055845, 
0.0191412465281212, 0.0114268115963509, 0.103204220413271, 0.078452404341738, 
0.0152687043763816, 0.0125886562406352, 0.0182067565234027, 0.0462180820795402, 
0.0364401428968663, 0.0194090471458831, 0.0112406942620355, 0.0133337979657764, 
0.106596330977092, 0.0478209145453927, 0.0222032279935448, 0.0101516180654996, 
0.0137134196174383, 0.042143933265787, 0.0864205683752937, 0.0238547689152505, 
0.0143213742471338, 0.0151473430788216, 0.0590715197404337, 0.053634887203726, 
0.0247785749747192, 0.011194760398567, 0.0126890728287531, 0.0766557963308132, 
0.0590702110484893, 0.0169895392652198, 0.00677005942798776, 
0.018287178764047, 0.0769595853534683, 0.0542596841626018, 0.0222422271067145, 
0.00368874826194732, 0.0175745946335888, 0.0975961064797157, 
0.0590711906992773, 0.0158487644103045, 0.00653285558251568, 
0.0144595690700503, 0.0709185761591732, 0.0738486352158054, 0.0302229677195635, 
0.0133155426744003, 0.0177939470986458, 0.109404956215175, 0.0634086915802925, 
0.0283976720485637, 0.0136745128545928, 0.0110702576633993, 0.120436705368422, 
0.0223912654419878, 0.0680013480258541, 0.0378197673556299, 0.0110303201868012, 
0.116516570113916, 0.0565443942236322, 0.015288339783421, 0.0226363118901274, 
0.0114229084796188, 0.0618959700716542, 0.0653706135133326, 0.0325094857951747, 
0.0202912683166869, 0.00951636456296724, 0.102306728354819, 0.0552270370523748, 
0.0389638008641069, 0.0280610363278553, 0.013636715095407, 0.0678928894984183, 
0.0656070421639929, 0.0234932614452173, 0.0145431353449972, 0.0168382099198391, 
0.114068692754264, 0.0422194433053208, 0.0124000448027864, 0.0158425845176136, 
0.0129409485473817, 0.0690732300613712, 0.0565709329781796, 0.0472563340845554, 
0.0165334308655512, 0.0140152466106071, 0.0630696264280817, 0.0491962600326307, 
0.0263573729933602, 0.0178226777805554, 0.0144837230827184, 0.0703522881251523, 
0.066022185103038, 0.0298869164983238, 0.0135026539560693, 0.0133160702016708, 
0.117324336776306, 0.0425367828236942, 0.0142417617511942, 0.0192890433852506, 
0.0128379655903443, 0.106731750977236, 0.0397502226182192, 0.0191810091265061, 
0.0132980646955746, 0.0181918790139105, 0.0847643793111234, 0.0776916520603729, 
0.0302970478943265, 0.0204655310113631, 0.0177086933489113, 0.0388515693948706, 
0.0386999654310686, 0.015659750246341, 0.0100276829577723, 0.0184310197940562, 
0.0838119588390848, 0.050065957016582, 0.0256602805908275, 0.0131185429088734, 
0.0178799377632785, 0.059142013643245, 0.0724575341818825, 0.0486365203433707, 
0.029728216127899, 0.0130020603281658, 0.0317571042231349, 0.028644254124892, 
0.00816654196429082, 0.149915025240632, 0.0376364067095845, 0.019453710800393, 
0.0196948892398089, 0.0069523842967116, 0.108528293695904, 0.0375152266931328, 
0.0227282895953258, 0.013179879358271, 0.00810935339767438, 0.0651095117529694, 
0.0313323383740184, 0.017220567034627, 0.0117279289713895, 0.00677615779189971, 
0.0662998389066916, 0.0303355626771597, 0.0160065537613069, 0.00876436623871667, 
0.00870548301831269, 0.0731305066707264, 0.0291322194609573, 
0.0177138798251975, 0.00879848132500499, 0.00830385081540016, 
0.0789511496032112, 0.0319737418965737, 0.0168043034781158, 0.00756088181943584, 
0.00725964546789586, 0.0915582719352179, 0.0308734686701026, 
0.0188888308000808, 0.00974222770819102, 0.00786972905510866, 
0.0529528650514754, 0.0298924708781357, 0.0161219171632207, 0.00663003829656885, 
0.00813905977498537, 0.0667534543573518, 0.0286322129566764, 
0.0135246782984633, 0.00791918952917411, 0.00853658784976257, 
0.0890915359343857, 0.0324255719757943, 0.0182759258987232, 0.00740840443261357, 
0.00726920302042691, 0.0719392001672945, 0.0268157630130172, 
0.0258368355455136, 0.00820163033222689, 0.00921766559328218, 
0.0572361970130853, 0.028382121327168, 0.0198835976528721, 0.00835590581087311, 
0.00956357466817438, 0.0619260868833676, 0.0320820729055485, 
0.0178126093892624, 0.00654091115688252, 0.00977050259961279, 
0.0655704598664718, 0.0284980353855646, 0.0152217378040468, 0.00476716251044846, 
0.00847628766330983, 0.0898471294291958, 0.0297167330218657, 
0.0261798558451151, 0.0336662651997825, 0.0073143653159969, 0.0758372595814775, 
0.0289804065192006, 0.0238382319347545, 0.0274890443728298, 0.00635142725725346, 
0.0525890622416451, 0.0246787529675476, 0.0191916463582682, 0.0189216554016435, 
0.0067296193619887, 0.0476427161522815, 0.0254534313426227, 0.0179773427422132, 
0.018503353760772, 0.0078107679717673, 0.060901365595206, 0.0311323488930323, 
0.0166468807604684, 0.0134964428195558, 0.00705010237389504, 
0.0510574569022532, 0.0298419397286911, 0.0182034085500556, 0.0137269505316061, 
0.00697942424759759, 0.0631805902334611, 0.0291429616790544, 
0.0150466729499882, 0.0109322132412112, 0.00756199894251764, 
0.0704999895085812, 0.0285185452628927, 0.0180246396118229, 0.011506069726699, 
0.00748234461044907, 0.0677414157534667, 0.0257604332979408, 
0.0160242346049525, 0.0102438265912977, 0.00842853191549877, 
0.0622360937153574, 0.0300966041039866, 0.0196683086935279, 0.00916280590461734, 
0.00861731504075017, 0.0670064908981601, 0.029597401877196, 0.0172528104219464, 
0.00965819885429942, 0.00766730136187936, 0.0677005239768908, 
0.0249130496745065, 0.0159143212642505, 0.00952843128416083, 
0.00671177248850447, 0.0702521241440112, 0.0310376997927253, 
0.0143282338068468, 0.0086844378101734, 0.00789255770980658, 
0.0858698960827043, 0.0328477466756521, 0.0146998711905156, 0.0066063276191937, 
0.00888107006107158, 0.0801569466401669, 0.0305521925499406, 
0.0171749663014406, 0.00756472237294103, 0.00648096255569042, 
0.0753326351401553, 0.0329934710445946)), .Names = c("strain", 
"variable", "avg", "SEM"), row.names = c(NA, -300L), class = "data.frame")

plot

(scatter_raw_curves <- df_group.tidy %>% 
    ggplot(mapping = aes (x = tap_num, y = avg, color = train_or_test)) +
    geom_point(size = 0.5) +
    geom_line(aes(group = train_or_test), size = 0.95) +
    geom_pointrange(mapping = aes(x = tap_num, 
                                  ymin = avg - SEM, 
                                  ymax = avg + SEM)) +
    geom_point(data = df_scale_setter_max, aes(x = tap_num, y = value), alpha = 0) +
    geom_point(data = df_scale_setter_min, aes(x = tap_num, y = value), alpha = 0) +
    theme(panel.background = element_blank()) +
    theme(text = element_text(size = 20),
          axis.line = element_line(colour = "black")) +
    ggtitle("") +
    theme(plot.title = element_text(size = 30, hjust = 0.5, face = "bold"),
          axis.text = element_text(size = 40),
          strip.text = element_text(size = 40),
          axis.title.y = (element_text(size =60))
    ) +
    labs(colour = "",
         y = "average",
         x = "tap #")+ 
    facet_wrap(~ variable + strain, 
               scales = "free_y",
               ncol = length(unique(df_group.tidy$strain)) #sets col num to #of strains
               )

)

# I am wondering if someone has a more elegant solution?

ghost commented 7 years ago

I don't have an answer, but your question is similar to this one: https://stackoverflow.com/questions/33444013/ggplot2-facet-wrap-fixed-y-scale-for-each-row-free-scale-between-rows

Looks like the solution offered was pretty similar, although the idea of setting the alpha to 0 is a good one.

aramcb commented 7 years ago

@philstraforelli Aw yes it seems like a very similar strategy. I find, however, that even when I set my fake data points, the freey scale only sets the scale to within the vicinity_ making it even more frustrating. (that is, if I set an invisible point to 1.00, the scale that plots is 1.2)