My goal is to make the graph look something like this My Goal. The problem I'm having is that ggplot won't let me use more than 6 kinds of shapes for the points, so my graph looks something like this right now current graph. How should I make it so that each line has it's unique shape of the points, but also making sure that they are shown cleanly and in the correct numeric order? (ie, not like this different shapes but unordered legend, and legend does not show the correct shapes of points, which is produced with the following code)
My data in data frame data_long:
structure(list(power1 = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L,
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L,
6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 8L, 8L,
8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L,
8L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L,
9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 10L, 10L, 10L, 10L, 10L, 10L,
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L,
10L, 10L, 10L, 10L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L,
11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L,
11L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L,
12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 13L, 13L,
13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L,
13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 14L, 14L, 14L, 14L, 14L,
14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L,
14L, 14L, 14L, 14L, 14L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L,
15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L,
15L, 15L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L,
16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 17L,
17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L,
17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 18L, 18L, 18L, 18L,
18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L,
18L, 18L, 18L, 18L, 18L, 18L, 19L, 19L, 19L, 19L, 19L, 19L, 19L,
19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L,
19L, 19L, 19L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L,
20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L,
21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L,
21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 22L, 22L, 22L,
22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L,
22L, 22L, 22L, 22L, 22L, 22L, 22L), levels = c("0", "0.25", "0.33",
"Period", "0.35", "0.375", "0.4", "0.425", "0.45", "0.475", "0.5",
"0.525", "0.55", "0.575", "0.6", "0.7", "0.8", "0.9", "1", "1.1",
"1.2", "1.3"), class = "factor"), group = c("1", "2", "3", "4",
"5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "1", "2", "3",
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "1", "2", "3",
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "1", "2", "3",
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "1", "2", "3",
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "1", "2", "3",
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "1", "2", "3",
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "1", "2", "3",
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "1", "2", "3",
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "1", "2", "3",
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "1", "2", "3",
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "1", "2", "3",
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "1", "2", "3",
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "1", "2", "3",
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "1", "2", "3",
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "1", "2", "3",
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "1", "2", "3",
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "1", "2", "3",
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "1", "2", "3",
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "1", "2", "3",
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "1", "2", "3",
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "1", "2", "3",
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23"), value = c(5.13864366306564,
4.77939817821398, 4.09270853368547, 4.03500151720244, 3.72410744566162,
3.19737465216476, 3.07771847969777, 3.04646629915112, 3.09333501144575,
3.07796931479018, 2.77184102938775, 2.69761571716445, 2.69833987013258,
2.66773835778714, 2.70531213747428, 2.58847957343357, 2.3158764347392,
2.23121402835477, 2.16775312280514, 2.13027139817901, 2.15173018229461,
2.0347211721044, 1.95208115543054, 8.13785280093794, 6.96041838646675,
6.78973741388835, 6.79482783007157, 5.51168003923104, 5.59774993516746,
5.47433228431448, 4.54796886657372, 4.35881755510305, 4.1217081751311,
3.78612559323399, 3.20203658023547, 3.17002447500251, 3.20088399232933,
3.21344327464311, 3.1938649207562, 2.97592722852895, 2.92676801137995,
2.87757679578107, 2.6243014891993, 2.61014656340088, 2.40438110442984,
2.36816998897389, 10.8471028290159, 9.56250940326214, 8.52310766717855,
8.10947146614225, 7.4060839154296, 7.50121965706743, 6.44213757389488,
5.38135683525506, 5.18741750910549, 5.14012654850439, 4.42463386554498,
3.49144215236728, 3.52917993107774, 3.54875213198698, 3.31809891604032,
3.26701697479364, 3.30074955356834, 3.12896354934427, 3.09928118424347,
2.9478337572486, 2.80904968813277, 2.62410531547891, 2.42655669907775,
12.8905210074294, 11.4615923959331, 10.4205749531164, 8.37013990030496,
7.53449207137587, 7.15475172462848, 6.55663296004952, 6.17413890450544,
5.44402864811583, 5.25741905081155, 4.65530164472199, 4.35332667914473,
3.78558290554753, 3.62109790828893, 3.62793925573247, 3.64600181220007,
3.37447580847868, 3.37865241123273, 3.4219426458623, 3.14647237932075,
2.84336192895752, 2.62663744620319, 2.56043135798194, 11.7995051996129,
10.749886578179, 9.16788641237401, 8.38108173946591, 8.20393019709473,
8.25167100160226, 6.66742430744288, 5.64564288700107, 5.58348875895986,
5.36151701687943, 4.62383257394448, 3.6368739291867, 3.60881131531282,
3.64529026096197, 3.34587426674957, 3.37960728571196, 3.30552625393981,
3.21252537769868, 3.11037538335181, 3.04367012603089, 2.86478161966272,
2.68679986240903, 2.44188890006912, 13.0814100913058, 12.7485824177513,
10.1359939529249, 9.39161249319762, 9.24723797685855, 9.03798643979528,
6.97535025689521, 6.08552141033587, 6.11140873800865, 5.66980178677372,
4.90246206056175, 3.83872789371619, 3.72174109809901, 3.76766227678154,
3.5008801026785, 3.42853909591354, 3.29763150057679, 3.32459304919249,
3.13270360558604, 3.16556796341629, 2.93835565237745, 2.77034015332477,
2.46149530701129, 15.4346929284771, 14.949332971757, 11.3477731591385,
11.2526231354424, 10.7562379662041, 9.46022583168103, 7.31701680907091,
6.82143106487618, 6.54912995115038, 6.01978990929582, 5.22055525535581,
4.06696321221901, 3.86051871063138, 3.88271497149732, 3.68835428182232,
3.46588752023038, 3.40017938587594, 3.33409054122572, 3.27437721033468,
3.1800812868836, 3.0166679038114, 2.86024361059806, 2.48161051246762,
18.4205570667446, 17.0873962395277, 13.8471635765988, 13.1281876559662,
12.8868025478135, 9.93268505520465, 7.70094772378251, 7.77461891298966,
7.06295188841488, 6.42277739775086, 5.58906805889066, 4.32860899052608,
4.01314299605697, 4.00777530874005, 3.90085125181232, 3.50564889166584,
3.53188648000107, 3.38729600427556, 3.37138325569636, 3.19594324924348,
3.10125774648195, 2.95828413659186, 2.50311305299687, 22.7183080989336,
19.9814897195756, 18.5628999193917, 15.8581372782429, 15.5100727558972,
10.4640129694759, 8.91690959596007, 8.26190488706468, 7.67372446427145,
6.89108438347427, 6.02037960424028, 4.63112066914527, 4.18148886174137,
4.14393368788975, 4.14335789865521, 3.62726109041515, 3.59647296817019,
3.56218579581726, 3.36520948461786, 3.21312765341411, 3.19271157623189,
3.06540975344927, 2.52600843854534, 29.7243216692731, 27.8276432532366,
24.514504442988, 21.2379765928566, 18.5534222223628, 11.0615850694332,
10.6984857467849, 8.76033401364452, 8.40813885910582, 7.43891180869636,
6.52930328523149, 4.98283578949519, 4.36644623596659, 4.35953159404631,
4.35156335816902, 3.78420541730513, 3.70803143990967, 3.68988968006999,
3.35891717146858, 3.24848924542533, 3.27255888494239, 3.18174377208628,
2.54951002175061, 58.1989217924128, 43.9221100968895, 31.7843690421675,
31.4901841403192, 23.1409478278656, 13.19482999695, 11.925022990115,
9.32880000729427, 9.30806145486793, 8.0884637798103, 7.13892440760706,
5.39686690801061, 4.61009716365765, 4.63592294537131, 4.51345681501507,
3.95712446816019, 3.92617829398743, 3.73622650533739, 3.3525126595048,
3.35235577272713, 3.29057280117792, 3.30854463469622, 2.57365038634712,
78.3994280703312, 40.2938920008789, 36.8732540769446, 28.3405827691679,
22.6504985586419, 14.746170594877, 11.142586680758, 9.25312478347536,
9.1532682896371, 8.12528629344052, 7.30138340021254, 5.5737465026873,
4.75425415800497, 4.6583179825636, 4.50057482704693, 4.00493884897168,
4.03091130594095, 3.66983156620339, 3.32896761261257, 3.30282910300606,
3.31705341974837, 3.26891362700399, 2.55286960341576, 37.6712382155759,
35.7457014791361, 34.1464036664781, 24.0316961589654, 20.9065115341602,
15.990014190891, 10.1820818794844, 9.12503690998079, 8.66516577218275,
8.0037684219851, 7.34092525148487, 5.6875568580998, 4.85501622121448,
4.63424197796023, 4.44583025689822, 4.0514754748331, 4.07572951983906,
3.58097800691833, 3.32851342163202, 3.30557023732398, 3.23705236466597,
3.18956636409415, 2.52215138395413, 39.9308800523089, 28.7989613401363,
23.4646702882904, 20.8728311494796, 19.4181576551116, 17.4551966969221,
9.37740693193392, 9.00089994659873, 8.2283334585154, 7.88626899591346,
7.38060453871976, 5.80545964443865, 4.95956577542994, 4.61046061210207,
4.39258876368832, 4.12896525558214, 4.0916500253485, 3.49666608246319,
3.32801475643795, 3.33701011486042, 3.13564017955291, 3.11428417353218,
2.50712397247042, 40.8483318402732, 24.660025933412, 18.0000422681451,
18.1652837034404, 17.8554687886568, 17.9361361197718, 8.68294638919202,
8.76811470531463, 7.78803322738736, 7.72705134947085, 7.37971301100791,
5.90261769674456, 5.05040797778261, 4.57287591581792, 4.32847041037438,
4.19769387469256, 4.09697614738224, 3.40959864173929, 3.3210203429889,
3.36232916664546, 3.03567795300488, 3.03773301239625, 2.49387168687705,
30.1462909933748, 20.5409147335714, 13.7354445126915, 11.7547884563709,
10.8993991443694, 7.99349308078362, 7.48047503801594, 6.62734982132179,
6.63338647326677, 6.49204630463644, 6.26914351168065, 6.00127896177237,
5.21313541556329, 4.28301875960657, 4.28604812533386, 4.02542718178527,
3.99783089689284, 3.29923301661269, 3.22214332482113, 3.12195063234774,
2.68867784945751, 2.68651318239183, 2.40915366332848, 24.0722076690155,
24.3408108118026, 9.5631205774713, 8.91243961640328, 7.81271135699668,
6.49960908806224, 6.17035953638092, 5.81577592377926, 5.84027839953848,
5.53832636547457, 5.2321378547673, 5.25878943924986, 5.33139174760173,
4.37985075533402, 4.09623115580598, 3.85723540219841, 3.78164115790203,
3.32619260833466, 3.13489365807321, 2.82888324641464, 2.44611370571754,
2.39637749525597, 2.3347011268872, 22.937865915141, 20.5153151380697,
7.39977718843242, 7.23099840426992, 6.13966797266852, 5.84308526845936,
5.8675475823089, 5.85559194097889, 5.34384133619004, 5.33078894588476,
4.4381055134539, 4.41518443512565, 4.42683128904282, 4.39441049043529,
3.88633488244428, 3.78059446312856, 3.53488492624045, 3.35575721388362,
3.05776992378397, 2.59599502838014, 2.30125090400795, 2.28090450050021,
2.26908823593751, 17.6401043030015, 17.7800179887829, 6.08794933288072,
6.13151009967121, 5.6977077662796, 5.52762501102557, 5.42126227945987,
5.36002906494716, 5.42904421949546, 4.98055757657446, 4.52424178992708,
3.9662769391896, 3.81108128930113, 3.66034007605087, 3.66724329648285,
3.6449398588576, 3.3475145783768, 3.3783159164983, 2.99386939699227,
2.41056097995389, 2.3818602852839, 2.18667972592362, 2.15052206320253,
15.4906034843442, 14.6818152690652, 5.6218244726155, 5.34876806415341,
5.37408529874299, 5.38280815735708, 5.39176138127794, 5.08166826736183,
4.66831095851281, 4.63421867612929, 4.68529499485843, 3.55778237195008,
3.50915116960842, 3.50841061067486, 3.45712011246863, 3.3371532295074,
3.15954191790475, 3.15757090845151, 2.93447293049159, 2.43289859638956,
2.28462433302964, 2.13680998992516, 2.13167906131011, 13.9598801329233,
12.4933936828763, 5.72873636704721, 5.39872661187065, 5.02962030371785,
4.91888518373503, 4.86428358796829, 4.73000595543503, 4.74506379824897,
4.31216950703026, 4.2375259073016, 3.40671695241089, 3.32555735676092,
3.33020192918282, 3.32465234636052, 3.14694469192561, 3.00811262427461,
2.8411124282808, 2.77964854591103, 2.51648972818177, 2.15093401597979,
2.10625925849882, 2.11701750718534, 12.7632947318645, 10.9390834787862,
5.84334969993377, 5.59917915801125, 4.86258697386329, 4.71444863014914,
4.5258515829203, 4.44023340784953, 4.49021089461522, 4.0601002676063,
3.80679536473264, 3.36223568778668, 3.26833864188926, 3.25649295550359,
3.11084446590995, 2.86868707757046, 2.87914793117105, 2.7939746366475,
2.57222595062283, 2.50336217394579, 2.08351142138273, 2.09604154052357,
2.09111459705992)), row.names = c(NA, -506L), class = c("tbl_df",
"tbl", "data.frame"))
density_vs_power <- ggplot(
data = data_long,
aes(power1, value, color = factor(group), group = group)
) +
geom_line() +
geom_point(shape = factor(data_long$group)) +
scale_y_continuous(trans = "log10")
Also, is there a way to make the colors of the lines more discrete so that each adjacent line is more discernible?
Currently, the cleanest version looks like this best version, but it returns the warning: The shape palette can deal with a maximum of 6 discrete values because more than 6 becomes difficult to discriminate ℹ you have requested 23 values. Consider specifying shapes manually if you need that many have them.
Any help is much appreciated!
I would consider using some other aes
/ faceting / etc. to distinguish such a long list of parameters (grouping them somehow and using 6 shape
s x 4 lty
s or 4 colour
s x 3 shape
s x 2 lty
s for instance). Note the multiple comparison statistical limitations when interpreting such a plot.
However here is a solution that bruitforses ggplot to implement your idea:
data_long %>%
mutate(fgr = factor(group, levels = (as.integer(.$group)) %>% unique %>% sort)) %>%
ggplot(
aes(power1, value, color = fgr, group = group)
) +
geom_line() +
geom_point(aes(shape = fgr)) +
scale_y_continuous(trans = "log10") +
scale_color_discrete(name = "group")+
scale_shape_manual(breaks = 1:23, values = 1:23, name = "group")