R: полигон () нанесен дважды? - PullRequest
0 голосов
/ 24 октября 2018

Я хочу заполнить область между двумя строками, используя функцию polygon () в R. Я хочу что-то, что выглядит примерно так:

enter image description here

По некоторым причинам, по моим данным, многоугольник строит график дважды для части графика, перекрывая себя и заполняя нижнюю линию:

enter image description here

Как мне предотвратить это?(Примечание: я знаю, что ggplot может справиться с этим по-другому, но в идеале я хотел бы придерживаться базовой графики для этого графика).Вот воспроизводимый пример:

xVals <- c(733.726536771981, 733.777671228426, 733.828805684871, 733.879940141315, 
       733.93107459776, 733.982209054205, 734.033343510649, 734.084477967094, 
       734.135612423539, 734.186746879983, 734.237881336428, 734.289015792873, 
       734.340150249317, 734.391284705762, 734.442419162207, 734.493553618651, 
       734.544688075096, 734.595822531541, 734.646956987986, 734.69809144443, 
       734.749225900875, 734.80036035732, 734.851494813764, 734.902629270209, 
       734.953763726654, 735.004898183098, 735.056032639543, 735.107167095988, 
       735.158301552432, 735.209436008877, 735.260570465322, 735.311704921766, 
       735.362839378211, 735.413973834656, 735.4651082911, 735.516242747545, 
       735.56737720399, 735.618511660434, 735.669646116879, 735.720780573324, 
       735.771915029768, 735.823049486213, 735.874183942658, 735.925318399102, 
       735.976452855547, 736.027587311992, 736.078721768437, 736.129856224881, 
       736.180990681326, 736.232125137771, 736.283259594215, 736.33439405066, 
       736.385528507105, 736.436662963549, 736.487797419994, 736.538931876439, 
       736.590066332883, 736.641200789328, 736.692335245773, 736.743469702217, 
       736.794604158662, 736.845738615107, 736.896873071551, 736.948007527996, 
       736.999141984441, 737.050276440886, 737.10141089733, 737.152545353775, 
       737.20367981022, 737.254814266664, 737.305948723109, 737.357083179554, 
       737.408217635998, 737.459352092443, 737.510486548888, 737.561621005332, 
       737.612755461777, 737.663889918222, 737.715024374666, 737.766158831111, 
       737.817293287556, 737.868427744, 737.919562200445, 737.97069665689, 
       738.021831113335, 738.072965569779, 738.124100026224, 738.175234482669, 
       738.226368939113, 738.277503395558, 738.328637852003, 738.379772308447, 
       738.430906764892, 738.482041221337, 738.533175677781, 738.584310134226, 
       738.635444590671, 738.686579047115, 738.73771350356, 738.788847960005, 
       738.839982416449, 738.891116872894, 738.942251329339, 738.993385785783, 
       739.044520242228, 739.095654698673, 739.146789155118, 739.197923611562, 
       739.249058068007, 739.300192524452, 739.351326980896, 739.402461437341, 
       739.453595893786, 739.50473035023, 739.555864806675, 739.60699926312, 
       739.658133719564, 739.709268176009, 739.760402632454, 739.811537088898, 
       739.862671545343, 739.913806001788, 739.964940458232, 740.016074914677, 
       740.067209371122, 740.118343827566, 740.169478284011, 740.220612740456, 
       740.2717471969, 740.322881653345, 740.37401610979, 740.425150566235, 
       740.476285022679, 740.527419479124, 740.578553935569, 740.629688392013, 
       740.680822848458, 740.731957304903, 740.783091761347, 740.834226217792, 
       740.885360674237, 740.936495130681, 740.987629587126, 741.038764043571, 
       741.089898500015, 741.14103295646, 741.192167412905, 741.243301869349, 
       741.294436325794, 741.345570782239, 741.396705238684, 741.447839695128, 
       741.498974151573, 741.550108608018, 741.601243064462, 741.652377520907, 
       741.703511977352, 741.754646433796, 741.805780890241, 741.856915346686, 
       741.90804980313, 741.959184259575, 742.01031871602, 742.061453172464, 
       742.112587628909, 742.163722085354, 742.214856541798, 742.265990998243, 
       742.317125454688, 742.368259911133, 742.419394367577, 742.470528824022, 
       742.521663280467, 742.572797736911, 742.623932193356, 742.675066649801, 
       742.726201106245, 742.77733556269, 742.828470019135, 742.879604475579, 
       742.930738932024, 742.981873388469, 743.033007844913, 743.084142301358, 
       743.135276757803, 743.186411214247, 743.237545670692, 743.288680127137, 
       743.339814583582, 743.390949040026, 743.442083496471, 743.493217952916, 
       743.54435240936, 743.595486865805, 743.64662132225, 743.697755778694, 
       743.748890235139, 743.800024691584, 743.851159148028, 743.902293604473, 
       743.953428060918, 744.004562517362, 744.055696973807, 744.106831430252, 
       744.157965886696, 744.209100343141, 744.260234799586, 744.31136925603, 
       744.362503712475, 744.41363816892, 744.464772625365, 744.515907081809, 
       744.567041538254, 744.618175994699, 744.669310451143, 744.720444907588, 
       744.771579364033, 744.822713820477, 744.873848276922, 744.924982733367, 
       744.976117189811, 745.027251646256, 745.078386102701, 745.129520559145, 
       745.18065501559, 745.231789472035, 745.282923928479, 745.334058384924, 
       745.385192841369, 745.436327297813, 745.487461754258, 745.538596210703, 
       745.589730667147, 745.640865123592, 745.691999580037, 745.743134036481, 
       745.794268492926, 745.845402949371, 745.896537405816, 745.94767186226, 
       745.998806318705, 746.04994077515, 746.101075231594, 746.152209688039, 
       746.203344144484, 746.254478600928, 746.305613057373, 746.356747513818, 
       746.407881970262, 746.459016426707, 746.510150883152)

Line1 <- c(0.064778, 0.066482, 0.06374, 0.06501, 0.06604, 0.066034, 0.067656, 
           0.066136, 0.067496, 0.064138, 0.064884, 0.065612, 0.064766, 0.066762, 
           0.067524, 0.068166, 0.068374, 0.068794, 0.069326, 0.06687, 0.067072, 
           0.066994, 0.06684, 0.068798, 0.066172, 0.066474, 0.069104, 0.069168, 
           0.06918, 0.070204, 0.069522, 0.070712, 0.069482, 0.0712, 0.072858, 
           0.07155, 0.071726, 0.072052, 0.06812, 0.07076, 0.073502, 0.070536, 
           0.074262, 0.072454, 0.07625, 0.073064, 0.074348, 0.07363, 0.075066, 
           0.075276, 0.075552, 0.074826, 0.075932, 0.077466, 0.076398, 0.07614, 
           0.07703, 0.078792, 0.076216, 0.077174, 0.077572, 0.075958, 0.07909, 
           0.078156, 0.078806, 0.080562, 0.081336, 0.082016, 0.081184, 0.081654, 
           0.084516, 0.08261, 0.082782, 0.083762, 0.086036, 0.085658, 0.085142, 
           0.0823, 0.083724, 0.084192, 0.085664, 0.086102, 0.088832, 0.088928, 
           0.0881, 0.088972, 0.09732, 0.09092, 0.094218, 0.097582, 0.09499, 
           0.097032, 0.09927, 0.09844, 0.098896, 0.100924, 0.101974, 0.104924, 
           0.105928, 0.107694, 0.107638, 0.108394, 0.109424, 0.113098, 0.114954, 
           0.115512, 0.11533, 0.115408, 0.117866, 0.120142, 0.122414, 0.125264, 
           0.126264, 0.12656, 0.126458, 0.129974, 0.129602, 0.128656, 0.13318, 
           0.13513, 0.136494, 0.142912, 0.147292, 0.147416, 0.152834, 0.158594, 
           0.164942, 0.172072, 0.185366, 0.210442, 0.24161, 0.273944, 0.297214, 
           0.310208, 0.308004, 0.309802, 0.312368, 0.320376, 0.336036, 0.34762, 
           0.356386, 0.376194, 0.383184, 0.384064, 0.379502, 0.381018, 0.383146, 
           0.390596, 0.39914, 0.424236, 0.472603695850663, 0.48525517203947, 
           0.535639121072085, 0.705879160314448, 0.643953513706079, 0.774685434323747, 
           0.842603885442604, 0.853701671573136, 0.927169015757258, 1.25255610510446, 
           1.40748119948669, 1.95349227710887, 2.498393576118, 4.22099193929919, 
           8.33161192204829, 19.9742993515895, 53.261886894398, 156.639540346086, 
           460.002851161524, 1142.43013545743, 2167.66847723692, 3130.07270763539, 
           3455.35148258996, 3002.83747747173, 2034.50614145667, 1105.97146650568, 
           492.326928912479, 190.924152994861, 68.5470896877025, 25.3944580977414, 
           9.39810916919242, 4.63960043214286, 2.77628214082652, 1.86293434228373, 
           1.52755924541905, 1.20084042173618, 1.1511223398714, 0.897870860372654, 
           1.04613728307656, 0.731404068414672, 0.693227684125641, 0.698776577190908, 
           0.589574361666472, 0.410234137797073, 0.475267164521991, 0.477486721748097, 
           0.432172, 0.40449, 0.390506, 0.369368, 0.351312, 0.3325, 0.314088, 
           0.298418, 0.285042, 0.280614, 0.271028, 0.274672, 0.281384, 0.285812, 
           0.28302, 0.272034, 0.255142, 0.24717, 0.238998, 0.235378, 0.22437, 
           0.211504, 0.192424, 0.176364, 0.16552, 0.158048, 0.151946, 0.144242, 
           0.142762, 0.142596, 0.145162, 0.138106, 0.136562, 0.145496, 0.131644, 
           0.131702, 0.130832, 0.12612, 0.12594, 0.122108, 0.118906, 0.118128, 
           0.118696, 0.115856, 0.115822, 0.11416, 0.113898, 0.109918, 0.111476, 
           0.110444, 0.10854, 0.107988, 0.106206, 0.105302, 0.10139)

Line2 <- c(0.0495474430713836, 0.0510494638407117, 0.0481337328320531, 
           0.0491588901998808, 0.0498802096097059, 0.0495505666767659, 0.051027642264331, 
           0.0495524990350983, 0.0511303377032387, 0.0480463691348879, 0.0489120179072127, 
           0.0495457036819549, 0.0483362353267378, 0.0498034162457172, 0.0499612718093682, 
           0.0500959899032639, 0.0500013913497601, 0.0503218861137095, 0.0509317006702804, 
           0.0487556827861149, 0.0491989726782214, 0.0492447982771942, 0.0491305118883924, 
           0.0510162485933272, 0.0482257491470395, 0.0482196181322814, 0.0503741347133539, 
           0.0499208497699261, 0.0495097198768801, 0.0501632192278279, 0.0491939303491708, 
           0.0500312925108397, 0.0484417244926947, 0.0497977238374495, 0.0511585431599913, 
           0.0497761453850715, 0.0500301498161133, 0.0505073006242376, 0.0466035289540916, 
           0.0490430076356903, 0.0513266083039648, 0.0478029763975264, 0.0509424106913944, 
           0.048590901622564, 0.0520335462856237, 0.0486404507090432, 0.0497949166557983, 
           0.048852947747234, 0.0500183786015377, 0.0498819658003675, 0.0498911057894296, 
           0.0488155866671147, 0.049595848236937, 0.0508323930036228, 0.0495300356735078, 
           0.0490542653068959, 0.0497462783890118, 0.0513532910349545, 0.0487014716392585, 
           0.0495827633244093, 0.0498556070662906, 0.0479573623847294, 0.0506317493612348, 
           0.0491109616221313, 0.0490691535961321, 0.0501236704092934, 0.0502631017042206, 
           0.0503583698205935, 0.0490785358918524, 0.0490653284876028, 0.051478340575586, 
           0.0491801112823706, 0.0488426428826155, 0.0493874172785053, 0.0512917953895079, 
           0.0508294052874006, 0.0504282159723186, 0.0476797980929665, 0.0489364525872169, 
           0.0489221391712078, 0.0496075280018693, 0.0491370440399938, 0.0508962682538093, 
           0.0500237852444645, 0.0481337377293433, 0.0477167836514482, 0.0547855514806173, 
           0.0472973283112286, 0.0495000579856485, 0.051957833655242, 0.0484400736317442, 
           0.0496372076929301, 0.0509803676252751, 0.0492700248409215, 0.048674316604885, 
           0.049474298068162, 0.0491006879630444, 0.0505883155272792, 0.0501616949475098, 
           0.0507154842318662, 0.049459249191632, 0.048956451256325, 0.048578232779009, 
           0.0507407202360952, 0.0512108038975597, 0.0506174944493673, 0.0493767373882645, 
           0.0482717315904899, 0.0492119328874549, 0.0497096885274221, 0.050135524957044, 
           0.0513283765516066, 0.0509090643873155, 0.0500281808351966, 0.0488188749806109, 
           0.051269410457411, 0.0496162207425867, 0.0471385296052672, 0.0496384144187448, 
           0.0490386766730223, 0.0474113998397759, 0.0503610677383044, 0.0509900345233891, 
           0.0467961820690649, 0.0470519232908672, 0.0461140413952872, 0.0433970713769535, 
           0.0382276742407667, 0.0352746176377589, 0.0404276173676568, 0.0496711704529297, 
           0.0605588305874772, 0.0657256516486326, 0.0657517425848615, 0.0544165085392558, 
           0.0488350233705259, 0.0439952371611539, 0.0437357695566673, 0.0502059623715462, 
           0.0511305830591974, 0.0495613055906699, 0.0602549223619105, 0.060504859696378, 
           0.0566443698745931, 0.0489074138104832, 0.0464259334283468, 0.0427956698076846, 
           0.03920019402789, 0.030935250326633, 0.030990403385663, 0.045773652009937, 
           0.0162838188436916, 0.0209792108855337, 0.154479156232206, 0.0878620658009199, 
           0.265165441217903, 0.432926747524172, 0.571860266811107, 0.764264319430826, 
           1.17302556358881, 1.37409054194739, 1.94075470950249, 2.49366259002399, 
           4.21910811640957, 8.33075945435599, 19.973807942848, 53.261561848333, 
           156.639308011371, 460.002672229574, 1142.4299804904, 2167.66833082705, 
           3130.07255726863, 3455.3513250349, 3002.83733381763, 2034.50600206543, 
           1105.97130823792, 492.326742814531, 190.923903033954, 68.5467460913814, 
           25.3939434295138, 9.39723239317386, 4.63779408730546, 2.77191463299085, 
           1.85085431294341, 1.49267160442913, 1.11028576748281, 0.959620502785551, 
           0.571084090817973, 0.587107666504343, 0.182236749423439, 0.112771962493464, 
           0.135578152807808, 0.0688833063022545, -0.0638792071382316, 0.0394095222933403, 
           0.0701751462987459, 0.0494485327299884, 0.0442026711837464, 0.0509755280864244, 
           0.049872315593508, 0.0506880269435977, 0.0497215599546617, 0.0466223878519777, 
           0.044710309084156, 0.0426800617158365, 0.045570528964671, 0.0406105585669469, 
           0.0463102780127866, 0.0539654127925308, 0.0600091576564424, 0.0611585475608292, 
           0.0565711857181144, 0.0482487656890588, 0.048793365172657, 0.0498912786672039, 
           0.0561864748665515, 0.0561764692724516, 0.0554696834807524, 0.0489759836401275, 
           0.0451669849071446, 0.0451871963756242, 0.0466535907812344, 0.0475594468143288, 
           0.0449215538104596, 0.0469727354534502, 0.049185414333081, 0.053448928601577, 
           0.0478874182205648, 0.0479027549485468, 0.0586602614299765, 0.0470550773886247, 
           0.0496084864563917, 0.051172311272468, 0.0488774199805978, 0.0510920880750532, 
           0.0494519726654588, 0.0481715744184617, 0.0490241776423138, 0.0509421181071456, 
           0.0493335207708948, 0.0504423810806632, 0.049923468179101, 0.0508500539048396, 
           0.0479855166057989, 0.0506432609918608, 0.0506253818909531, 0.0498791387563967, 
           0.0506359561231594, 0.0503955512555402, 0.0512315792549038, 0.0491154805591258
)

  plot(x=xVals, y=Line1, col=adjustcolor(col="#a6bddb",alpha.f=0.6), type = "l", lwd=2, log = "y")
  lines(x=xVals, y=Line2, col=adjustcolor(col="#2b8cbe",alpha.f=0.6), lwd=2)
  polygon(c(xVals, rev(xVals)), c(Line2, rev(Line1)), col = adjustcolor(col="#2b8cbe",alpha.f=0.6), border = NA)

1 Ответ

0 голосов
/ 24 октября 2018

Одно из значений Line2 было меньше нуля, которое не могло быть построено с осью Y в логарифмическом масштабе - поэтому линия Line2 имеет разрыв в нем.Кажется, что polygon() запутался.

В зависимости от того, что вы хотите сделать, удаление оскорбительного значения заставляет сюжет (в основном) выглядеть так:

polygon(c(xVals[Line2>0], rev(xVals)), 
        c(Line2[Line2>0], rev(Line1)), 
        col = adjustcolor(col="#2b8cbe",alpha.f=0.6), border = NA)
...