要么未生成图例,要么生成时错误地分配了数据
Either legends not produced or if produced wrongly assigned for data
我对以下数据使用了样条插值:
structure(list(HOUR = c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23), Event_01 = c(9.5, 7, 12.5, 19, 5, 10.5, 6, 1, 6, 9, 0, 28, 5, 27, 14, 24, 31, 13, 6.5, 38.5, 2.5, 5.5, 8.5, 9.5), Event_02 = c(6.5, 8, 18, 22.5,11.5, 9, 23.5, 6, 3, 13, 7, 3.5, 43.5, 5, 4.5, 11.5, 29.5, 10, 11.5, 0.5, 1, 5, 10, 14.5), Event_03 = c(1, 12, 32.5, 57.5, 50, 79, 33.5, 6.5, 16, 27, 5, 6.5, 12.5, 2, 1.5, 4.5, 0.5, 11.5, 7.5, 0.5, 1, 7, 8.5, 0),Event_04 = c(6.8, 0, 8.9, 1, 0, 4.8, 12.5, 0.73, 7.7, 3.8, 17, 7.1, 1.8, 9.2, 15.7, 21.1, 37.3, 5.41, 23.3, 35.1, 25.9, 7.91, 64.5, 68.5), Event_05 = c(16.7, 4.1, 0.297, 14.7, 13.5, 0, 0, 0, 0, 4.3, 5.6, 1.3, 0.71, 16.3, 40.1, 46.5, 55.1, 16, 29.7, 38.1, 10.7, 19.3, 0, 0), Event_06 = c(0.23, 0.297, 14.4, 79.5, 1.81, 6.09, 28.2, 0, 0.5, 1, 1.8, 0, 0.2, 0, 8.9, 6.4, 74.4, 2, 20.6, 0, 0, 0, 9.11, 36.6), Event_07 = c(95.2, 44.5, 17.5, 11.2, 4.28, 1, 0.811, 0.5, 0.189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), Event_08 = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 1, 3.5, 29, 64, 61, 5.5, 3, 10, 0, 0)), row.names = c(NA, -24L), class = "data.frame")
下面是我用于绘图的插值数据,这里 Event_01 在下面的代码中是 spl_01。
structure(list(x = c(0, 0.323943661971831,0.647887323943662,0.971830985915493, 1.29577464788732,1.61971830985915,1.94366197183099, 2.26760563380282, 2.59154929577465, 2.91549295774648, 3.23943661971831, 3.56338028169014, 3.88732394366197, 4.2112676056338, 4.53521126760563, 4.85915492957746,5.1830985915493, 5.50704225352113, 5.83098591549296, 6.15492957746479, 6.47887323943662, 6.80281690140845, 7.12676056338028, 7.45070422535211, 7.77464788732394, 8.09859154929578, 8.42253521126761, 8.74647887323944, 9.07042253521127, 9.3943661971831, 9.71830985915493, 10.0422535211268, 10.3661971830986, 10.6901408450704, 11.0140845070423, 11.3380281690141, 11.6619718309859, 11.9859154929577, 12.3098591549296, 12.6338028169014, 12.9577464788732, 13.2816901408451, 13.6056338028169, 13.9295774647887, 14.2535211267606, 14.5774647887324, 14.9014084507042, 15.2253521126761, 15.5492957746479, 15.8732394366197, 16.1971830985916, 16.5211267605634, 16.8450704225352, 17.169014084507, 17.4929577464789, 17.8169014084507, 18.1408450704225, 18.4647887323944, 18.7887323943662, 19.112676056338, 19.4366197183099, 19.7605633802817, 20.0845070422535, 20.4084507042254, 20.7323943661972, 21.056338028169, 21.3802816901408, 21.7042253521127, 22.0281690140845, 22.3521126760563, 22.6760563380282, 23), Event_01 = c(9.5, 7.61339962211308, 6.84489414544315,6.95652217735349, 7.76408394739537, 9.36284027167982, 11.9385718858489, 15.4780178734598, 18.6138048041324, 19.4146746592965, 16.2903666901755, 10.7454563154074, 5.9262169070542, 4.7297844370838, 6.81449841671686, 9.66684468293744, 10.8412568025007, 9.75419011234066, 7.39248627225536, 4.77960015811686, 2.61838081001007, 1.27236156253392, 1.08247557297311, 2.13182862940852, 4.1608420589837, 6.87976105266377, 9.51491674334209, 10.4819312704944, 8.13030434139983, 2.73493412219963, -1.33713634240349, 0.799847375473028, 10.9697176851655, 22.6689238190535, 27.9918436433932, 22.1923761235166, 11.6200090454086, 5.05857032985571, 8.89506459669622, 18.5919073161713, 26.500685819989, 26.4129429703938, 20.67255425835, 14.7680295730887, 13.5545815837986, 16.8984774988385, 22.3186316867511, 27.4143910484632, 30.7715851518744, 31.5648773319545, 29.0555500231982, 23.6434054160119, 16.5848399935523, 9.20156696250281, 3.73931313392565, 3.31686880849124, 10.9292108490813, 24.5249053330549, 36.0689418081613, 37.2986362216934, 26.4252578592663, 11.3144175525809, 0.580657374170864, -1.36985577821674, 1.93565403667586, 6.09583268483259, 8.15237965553452, 8.61234357246622, 8.49214640138242, 8.57655792141028, 8.93517211072439, 9.5), Event_02 = c(6.5, 5.2270088371399, 5.81207234453764, 7.77926773691979, 10.6593694238805, 14.0179647899546, 17.4319174705753, 20.4532960768346, 22.4654846636412, 22.7816230332891, 20.837031999862, 17.1720081865662, 12.912997668886, 9.18827584095015, 7.08256971606829, 7.65140388250258, 11.809128623484, 18.0460704461263, 22.8081899724197, 22.6058076200243, 17.2265459813331, 9.92658615697658, 4.08871037052076, 1.45523405913204, 1.58808941316028, 3.89473073724854, 7.50720846129372, 11.0961844806905, 13.2909421421748, 13.1734754919915, 10.7879470885395, 6.30318894269286, 0.91946715823211, -1.35780334885025, 3.94897441291285, 18.6304178566054, 35.0410242883893, 43.465033521617, 36.9896649278584, 21.4779649728754, 6.43095697203148, -0.187403311468207, 0.457593142673783, 3.84389357006835, 5.99659821384475, 7.25886389485085, 10.0055397925251, 16.2478210121734, 24.0609217609132, 29.170660217941, 27.6190639454656, 20.4750690675264, 12.5897342070345, 8.70576663531898, 9.38865926765852, 11.2570222837813, 10.8557355930475, 7.31240900670251, 2.81701936873091, -0.286681439256614, -0.949721470675431,-0.0539810830135957, 1.36468983757907, 2.65636463865379, 3.89863732953303, 5.24946953254536, 6.79723933011914, 8.46322688408646, 10.144150552269, 11.7478988797294, 13.2168459379709, 14.5), Event_03 = c(1, 3.69822485223062, 7.28714120237152, 11.5967766271108, 16.5708182572742, 22.7437718109021, 30.8415147183411, 41.1691226463358, 51.1688888841139, 57.0909761959955, 55.8880006577032, 50.8888390704731, 48.8047424929532, 55.6436726036314, 68.4117132021609, 78.0785201177672, 75.993681365489, 61.9755503977128, 42.9848426023007, 26.0634974925125, 14.6176462903367, 8.20543394410154, 6.19632524974241, 7.80471913891945, 12.03891283162, 17.8859852312884, 23.8126367818958, 27.4137695366894, 26.2120924350382, 19.6140527898853, 11.0297005463918, 4.3791333689889, 2.2428471181955, 3.55807781376812, 6.64855822779775, 9.94854717223898, 12.280448198026, 12.5518226905698, 10.0866833391222, 6.10720503516314, 2.37607328428644, 0.402204707899257, 0.187308875455902, 1.17890559945882, 2.79794801770657, 4.26439486718006, 4.70363484370608, 3.39690656028224, 1.2648714294067, 0.206766093706999, 1.9770833894057, 6.04800863650303, 10.1745750524143, 12.1504370028654, 11.4457493685617, 9.11472529840058, 6.26202596622197, 3.62185305721622, 1.48915097141279, 0.131121875326608, -0.307366859033949, 0.136119270126445, 1.40790408529554, 3.3205272255802, 5.4343259511466, 7.28200534586711, 8.48962158521131, 8.90740416658187, 8.41853393218605, 6.89120615187022, 4.14735139635593, 0), Event_04 = c(6.8, 0.495837273590017, -1.47757166345161, -0.225047562652488, 3.05551013354516, 6.68236566041985, 8.81706410548725, 7.965755790621, 4.97899611735547, 1.68360640256777, -0.257119605623201, -0.685028079983249, -0.240387143283007, 0.48392364736869, 1.56579606483526, 3.53292389801559, 6.8423362475733, 10.5899888745301, 12.7239395984228, 11.2535655603059, 6.67130863639221, 2.09758177618759, 0.715822721492942, 3.11952774531603, 6.45984059295107, 7.67863959548037, 5.8698352972189, 3.73267237215024, 4.29935507940417, 8.71613513310514, 14.1209557267534, 17.1411225070606, 15.7513862150782, 11.591088506491, 6.91664343005585, 3.55708577708248, 1.84058221285448, 1.76601327144733, 3.2449314047062, 5.79085245526493, 8.80394946932401, 11.7091915758006, 14.0788450440664, 15.5393362977747, 15.9110235339414, 16.5297166899098, 19.4442621501428, 26.2888532411932, 34.3076645022404, 38.1244581868506, 32.8161896839931, 20.5198941666481, 8.68443738249332, 4.59220663875428, 9.3611842598336, 18.2848529089182, 26.5065329675913, 31.6601183218077, 34.3325991866564, 35.268998575764, 34.4937830250616, 30.9568826975136, 23.5425210509909, 13.5256119804392, 6.68786383365874, 9.29863902276834, 24.0995723168223, 45.360812923324, 66.1072822977031, 79.9302050522147, 82.1691437693323, 68.5), Event_05 = c(16.7, 12.5441855252254, 8.34362855313822, 4.41787723956478, 1.16077854846054, -0.647604745472042, -0.102110924095139, 3.42734525580004, 8.69945934039577, 13.6936357920166, 16.5426115931125, 16.7863788697185, 14.7114273859331, 10.6679443818312, 5.70292384305104, 1.33062045188958, -1.00570088424742, -1.23500541105728, -0.443565715518948, 0.270469019624708, 0.430867875687446, 0.219612015509464,-0.149146768590174, -0.438982573074371, -0.383864445806345, 0.28110539133936, 1.58317818386767, 3.15147212444825, 4.57761541053009, 5.53765540150872, 5.88705969035364, 5.50442621518658, 4.38475352211244, 2.83961009560673, 1.23387626494397, -0.0308252672118428, -0.423840133383948, 0.613795208423324, 3.5520543963481, 8.45529996748449, 15.2723947903212, 23.7401475293834, 32.3361590952822, 39.0750282927206, 42.3509203413568, 43.5309429168244, 45.3810052995117, 50.2326752001102, 55.7792370358973, 56.9453732853217, 49.0926912335355, 34.4363234760545, 20.347826671831, 14.0435596870459, 16.889231694269, 24.722507025849, 33.1993970759804, 39.0899119313348, 40.4849403612008, 35.6033457132876, 25.4459170193988, 15.162015181805, 10.2069952272305, 12.5038073534301, 17.3163118812153, 19.178412780952, 14.9786059132215, 7.25970437041171, -0.604347935716486, -5.61758775273317, -5.95098499951591, 0), Event_06 = c(0.200000000000003, 3.21195723374961, 2.91277688880917, 0.560254897687049, -2.05636985727843, -0.385342177496417, 11.0198982232709, 35.6383504153214, 63.5633766611203, 79.3142423727135, 69.5804089914321, 40.8067268070998, 9.91756091653917, -7.16459988298072, -7.97813777924387, 0.912050882121392, 12.8810856447921, 23.1414883471404, 28.4554036511809, 25.793723692691, 16.2178646064498, 5.11848074313128, -1.992541269976, -3.15709316491078, -1.14047763321323, 0.984167186195019, 1.55050511578261, 1.24903789796083, 0.99267212460404, 1.27599300936473, 1.70450658459435, 1.77037539775108, 1.21323889676258, 0.445789260871091,-0.00595799836593398, 0.159928249868152, 0.458440840406507, 0.231920619216309, -0.845791438766333, -1.58989495221456, -0.385336742811433, 3.78242759463506, 8.36171130254352, 9.48954873914033, 4.38171976037601, -1.29680984133125, 2.09435916378687, 22.6619079955276, 52.1929965789649, 72.7336251386671, 67.6180549702337, 40.6933654193044, 11.239976165459, -1.86603302731491, 3.99253266797744, 16.0704981381424, 21.3020418888169, 15.5988071458265, 5.51710113049003, -1.84161036334854, -3.29978054262248, -1.53144236051194,0.324981014347511, 0.542957418819504, 0.057571791228776, 0.0977693332278966, 1.58852495124615, 4.72485925034064, 9.59449650044407, 16.333957067782, 25.2304086651805, 36.6), Event_07 = c(95.2, 76.1548247486645, 59.6586136306095, 45.6093831918477, 33.9423668154075, 24.7862563157951, 18.3324065179457, 14.634384352318, 12.8083634438743, 11.5801645978504, 9.79825093696731, 7.4297446084957, 5.03517565978141, 3.14826377150478, 1.90728741404065, 1.18535234439483, 0.850399016222747, 0.765688024540133, 0.790533079251887, 0.787463444447199, 0.704255489633026, 0.578907528169755, 0.453249081830991, 0.348475330352227, 0.258355860910787, 0.174851405852688, 0.0964871090569559, 0.0327855784719879, -0.00572308803209142, -0.0156597578578521, -0.00884359971674018, 0.000968590840131486, 0.00419573731708972,0.00261329431342138, -9.09505304274809e-05, -0.00111442420552958, -0.000763245577884933, -2.55715306000146e-05, 0.000293192589109531, 0.000220612911431297, 2.14481121962924e-05, -7.63164479522141e-05, -6.31710642299776e-05, -9.93804095763098e-06, 1.96226163098208e-05, 1.79327561048159e-05, 3.84839742201031e-06, -4.97282581467029e-06, -5.04954447277398e-06, -1.36223439657862e-06, 1.23814239614973e-06, 1.41090271441616e-06, 4.5641091458994e-07, -3.01436674867037e-07, -3.91276230231932e-07, -1.47267785942592e-07, 7.12280875316584e-08, 1.07711900092643e-07, 4.62184444957681e-08, -1.61336700389717e-08, -2.94398034967966e-08, -1.42035750258855e-08, 3.42607864455438e-09, 8.01398230033908e-09, 4.32193822646381e-09, -6.58441811773969e-10, -2.26382218255561e-09, -1.42198982466289e-09, 1.17426517505667e-10, 9.78554312547201e-10, 9.39412140045312e-10, 0), Event_08 = c(0, 1.97501653865401e-08, 2.05730889443126e-08, 2.4687706733175e-09, -2.98958604193838e-08, -4.7594512147815e-08, -1.38430558064977e-08, 9.08642661983835e-08, 1.68485661499827e-07, 7.20297481507733e-08, -2.98615425416837e-07, -6.18941317897945e-07, -3.39193670145872e-07, 9.71694833170912e-07, 2.2645309233768e-06, 1.49749662469696e-06, -3.09615237496876e-06, -8.22617670081403e-06, -6.33739327863645e-06, 9.5955658471037e-06, 2.96627654318938e-05, 2.60306590192294e-05, -2.86395645540243e-05, -0.000106161432466867, -0.000104548502293633, 8.09085621931325e-05, 0.00037701758771131, 0.000412545144899753, -0.000208936998112408, -0.00132810607080896, -0.0016044741221854, 0.00045092430153756, 0.00463815752579488, 0.00616406993073543, -0.000537614894473244, -0.0160464462307734, -0.0234296124477496, -0.00191214051997395, 0.0698170074469639, 0.215512223619295, 0.459623656783214, 0.799751893985649, 1.07405445711749, 1.06206274008542, 0.661953765095714, 0.700152437077675, 2.43983433716472, 7.04433746722357, 14.6038081719702, 24.5678022338879, 36.3312872203864, 48.6238792232563, 59.6746002306471, 67.6951962632725, 70.7922877076959, 66.9731659443241, 54.3618951606746, 34.9361708366816, 15.2429751661605, 2.0204286555642, -2.00088262805462, -0.0666446439867805, 4.09875232125227, 7.73168437068042, 9.87971008735865, 9.79286579712875, 7.2765866996866, 3.47004291329713, -0.291549104269716, -2.76213061017673, -2.97089793738165, 0)), class = "data.frame", row.names = c(NA, -72L))
我想绘制将通过所有给定点的平滑曲线。我已经为它使用了样条插值,但它在某些时候给出了一些负值,我想放弃。我尝试在同一个 canvas 上使用 ggplot
和 geom_line
绘制多个图表,但它没有为图表生成图例。我在这个论坛上经历了一些类似的问题,并按照某些问题中的建议更改了 aes
中的 colour
位置,但随后它产生了图例,但颜色与分配给它们的数据不匹配。
下面是我试过的:
p <- ggplot() + geom_point() + geom_line(data = spl_01, aes(x = x, y = y), colour ="blue") +
geom_line(data = spl_02, aes(x = x, y = y), colour = "grey0" ) +
geom_line(data = spl_03, aes(x = x, y = y), colour = "dodgerblue3") +
geom_line(data = spl_04, aes(x = x, y = y), colour = "yellowgreen") +
geom_line(data = spl_05, aes(x = x, y = y), colour = "orange") +
geom_line(data = spl_06, aes(x = x, y = y), colour = "deeppink2") +
geom_line(data = spl_07, aes(x = x, y = y), colour = "darkmagenta") +
geom_line(data = spl_08, aes(x = x, y = y), colour = "deepskyblue3") +
scale_color_manual("", values = c("blue" = "Event_01","grey0" = "Event_02","dodgerblue3" = "Event_03","yellowgreen"= "Event_04","orange" = "Event_05",
"deeppink2" = "Event_06","darkmagenta" = "Event_07","deepskyblue3" = "Event_08")) +
ggtitle("Hourly Rainfall on Extreme Event")
p <- p + scale_y_continuous(expand = expansion(mult = c(0, 0.05)), limits = c(-10, 100), breaks = c(-10,0,10,20,30,40,50,60,70,80,90),
labels = c("-10","0","10","20","30","40","50","60","70","80","90")) +
scale_x_continuous(expand = expansion(mult = c(0.024, 0.05)),
limits = c(0,23.5), breaks = c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23),
labels = c("0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23")) +
theme(axis.text.x=element_text(color = "black", size=12, face = "bold", vjust = 0.01)) +
theme(axis.text.y = element_text(color = "black", size=12, face = "bold", hjust = -0.3))
p <- p + theme( axis.line = element_line(colour = "black", size = 0.5, linetype = "solid")) + labs( y = "RAIN (mm)") + labs(x = "HOUR")
p <- p + theme(plot.title = element_text(colour = "red4", size = "18", face = "bold", hjust = 0.5, vjust = 0.5),
axis.title=element_text(colour = "blue2", size = 14, face="bold", vjust = 0.1))
听起来你想将负值强制为 0 然后绘图。如果您先将数据转换为 'long' 格式,这会容易得多。
您的自定义配色方案也很接近,但是您交换了名称和值。名称应该是要匹配的数据标签,颜色应该是向量中的实际值。
这是使用您共享的插值数据的一种方法:
library(tidyverse)
# set your manual color scheme
color_scheme <- setNames(
c(
"blue",
"grey0",
"dodgerblue3",
"yellowgreen",
"orange",
"deeppink2",
"darkmagenta",
"deepskyblue3"
),
names(spl)[-1]
)
spl %>%
mutate_at(.vars = vars(-x), function(x){ifelse(x < 0, 0, x)}) %>%
pivot_longer(-x, names_to = "event", values_to = "value") %>%
ggplot(aes(x = x, y = value, color = event)) +
geom_line(size = 1) +
scale_color_manual(values = color_scheme) +
ggtitle("Hourly Rainfall on Extreme Event")
这给出了以下情节:
然后您可以根据需要进一步自定义美学。
我对以下数据使用了样条插值:
structure(list(HOUR = c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23), Event_01 = c(9.5, 7, 12.5, 19, 5, 10.5, 6, 1, 6, 9, 0, 28, 5, 27, 14, 24, 31, 13, 6.5, 38.5, 2.5, 5.5, 8.5, 9.5), Event_02 = c(6.5, 8, 18, 22.5,11.5, 9, 23.5, 6, 3, 13, 7, 3.5, 43.5, 5, 4.5, 11.5, 29.5, 10, 11.5, 0.5, 1, 5, 10, 14.5), Event_03 = c(1, 12, 32.5, 57.5, 50, 79, 33.5, 6.5, 16, 27, 5, 6.5, 12.5, 2, 1.5, 4.5, 0.5, 11.5, 7.5, 0.5, 1, 7, 8.5, 0),Event_04 = c(6.8, 0, 8.9, 1, 0, 4.8, 12.5, 0.73, 7.7, 3.8, 17, 7.1, 1.8, 9.2, 15.7, 21.1, 37.3, 5.41, 23.3, 35.1, 25.9, 7.91, 64.5, 68.5), Event_05 = c(16.7, 4.1, 0.297, 14.7, 13.5, 0, 0, 0, 0, 4.3, 5.6, 1.3, 0.71, 16.3, 40.1, 46.5, 55.1, 16, 29.7, 38.1, 10.7, 19.3, 0, 0), Event_06 = c(0.23, 0.297, 14.4, 79.5, 1.81, 6.09, 28.2, 0, 0.5, 1, 1.8, 0, 0.2, 0, 8.9, 6.4, 74.4, 2, 20.6, 0, 0, 0, 9.11, 36.6), Event_07 = c(95.2, 44.5, 17.5, 11.2, 4.28, 1, 0.811, 0.5, 0.189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), Event_08 = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 1, 3.5, 29, 64, 61, 5.5, 3, 10, 0, 0)), row.names = c(NA, -24L), class = "data.frame")
下面是我用于绘图的插值数据,这里 Event_01 在下面的代码中是 spl_01。
structure(list(x = c(0, 0.323943661971831,0.647887323943662,0.971830985915493, 1.29577464788732,1.61971830985915,1.94366197183099, 2.26760563380282, 2.59154929577465, 2.91549295774648, 3.23943661971831, 3.56338028169014, 3.88732394366197, 4.2112676056338, 4.53521126760563, 4.85915492957746,5.1830985915493, 5.50704225352113, 5.83098591549296, 6.15492957746479, 6.47887323943662, 6.80281690140845, 7.12676056338028, 7.45070422535211, 7.77464788732394, 8.09859154929578, 8.42253521126761, 8.74647887323944, 9.07042253521127, 9.3943661971831, 9.71830985915493, 10.0422535211268, 10.3661971830986, 10.6901408450704, 11.0140845070423, 11.3380281690141, 11.6619718309859, 11.9859154929577, 12.3098591549296, 12.6338028169014, 12.9577464788732, 13.2816901408451, 13.6056338028169, 13.9295774647887, 14.2535211267606, 14.5774647887324, 14.9014084507042, 15.2253521126761, 15.5492957746479, 15.8732394366197, 16.1971830985916, 16.5211267605634, 16.8450704225352, 17.169014084507, 17.4929577464789, 17.8169014084507, 18.1408450704225, 18.4647887323944, 18.7887323943662, 19.112676056338, 19.4366197183099, 19.7605633802817, 20.0845070422535, 20.4084507042254, 20.7323943661972, 21.056338028169, 21.3802816901408, 21.7042253521127, 22.0281690140845, 22.3521126760563, 22.6760563380282, 23), Event_01 = c(9.5, 7.61339962211308, 6.84489414544315,6.95652217735349, 7.76408394739537, 9.36284027167982, 11.9385718858489, 15.4780178734598, 18.6138048041324, 19.4146746592965, 16.2903666901755, 10.7454563154074, 5.9262169070542, 4.7297844370838, 6.81449841671686, 9.66684468293744, 10.8412568025007, 9.75419011234066, 7.39248627225536, 4.77960015811686, 2.61838081001007, 1.27236156253392, 1.08247557297311, 2.13182862940852, 4.1608420589837, 6.87976105266377, 9.51491674334209, 10.4819312704944, 8.13030434139983, 2.73493412219963, -1.33713634240349, 0.799847375473028, 10.9697176851655, 22.6689238190535, 27.9918436433932, 22.1923761235166, 11.6200090454086, 5.05857032985571, 8.89506459669622, 18.5919073161713, 26.500685819989, 26.4129429703938, 20.67255425835, 14.7680295730887, 13.5545815837986, 16.8984774988385, 22.3186316867511, 27.4143910484632, 30.7715851518744, 31.5648773319545, 29.0555500231982, 23.6434054160119, 16.5848399935523, 9.20156696250281, 3.73931313392565, 3.31686880849124, 10.9292108490813, 24.5249053330549, 36.0689418081613, 37.2986362216934, 26.4252578592663, 11.3144175525809, 0.580657374170864, -1.36985577821674, 1.93565403667586, 6.09583268483259, 8.15237965553452, 8.61234357246622, 8.49214640138242, 8.57655792141028, 8.93517211072439, 9.5), Event_02 = c(6.5, 5.2270088371399, 5.81207234453764, 7.77926773691979, 10.6593694238805, 14.0179647899546, 17.4319174705753, 20.4532960768346, 22.4654846636412, 22.7816230332891, 20.837031999862, 17.1720081865662, 12.912997668886, 9.18827584095015, 7.08256971606829, 7.65140388250258, 11.809128623484, 18.0460704461263, 22.8081899724197, 22.6058076200243, 17.2265459813331, 9.92658615697658, 4.08871037052076, 1.45523405913204, 1.58808941316028, 3.89473073724854, 7.50720846129372, 11.0961844806905, 13.2909421421748, 13.1734754919915, 10.7879470885395, 6.30318894269286, 0.91946715823211, -1.35780334885025, 3.94897441291285, 18.6304178566054, 35.0410242883893, 43.465033521617, 36.9896649278584, 21.4779649728754, 6.43095697203148, -0.187403311468207, 0.457593142673783, 3.84389357006835, 5.99659821384475, 7.25886389485085, 10.0055397925251, 16.2478210121734, 24.0609217609132, 29.170660217941, 27.6190639454656, 20.4750690675264, 12.5897342070345, 8.70576663531898, 9.38865926765852, 11.2570222837813, 10.8557355930475, 7.31240900670251, 2.81701936873091, -0.286681439256614, -0.949721470675431,-0.0539810830135957, 1.36468983757907, 2.65636463865379, 3.89863732953303, 5.24946953254536, 6.79723933011914, 8.46322688408646, 10.144150552269, 11.7478988797294, 13.2168459379709, 14.5), Event_03 = c(1, 3.69822485223062, 7.28714120237152, 11.5967766271108, 16.5708182572742, 22.7437718109021, 30.8415147183411, 41.1691226463358, 51.1688888841139, 57.0909761959955, 55.8880006577032, 50.8888390704731, 48.8047424929532, 55.6436726036314, 68.4117132021609, 78.0785201177672, 75.993681365489, 61.9755503977128, 42.9848426023007, 26.0634974925125, 14.6176462903367, 8.20543394410154, 6.19632524974241, 7.80471913891945, 12.03891283162, 17.8859852312884, 23.8126367818958, 27.4137695366894, 26.2120924350382, 19.6140527898853, 11.0297005463918, 4.3791333689889, 2.2428471181955, 3.55807781376812, 6.64855822779775, 9.94854717223898, 12.280448198026, 12.5518226905698, 10.0866833391222, 6.10720503516314, 2.37607328428644, 0.402204707899257, 0.187308875455902, 1.17890559945882, 2.79794801770657, 4.26439486718006, 4.70363484370608, 3.39690656028224, 1.2648714294067, 0.206766093706999, 1.9770833894057, 6.04800863650303, 10.1745750524143, 12.1504370028654, 11.4457493685617, 9.11472529840058, 6.26202596622197, 3.62185305721622, 1.48915097141279, 0.131121875326608, -0.307366859033949, 0.136119270126445, 1.40790408529554, 3.3205272255802, 5.4343259511466, 7.28200534586711, 8.48962158521131, 8.90740416658187, 8.41853393218605, 6.89120615187022, 4.14735139635593, 0), Event_04 = c(6.8, 0.495837273590017, -1.47757166345161, -0.225047562652488, 3.05551013354516, 6.68236566041985, 8.81706410548725, 7.965755790621, 4.97899611735547, 1.68360640256777, -0.257119605623201, -0.685028079983249, -0.240387143283007, 0.48392364736869, 1.56579606483526, 3.53292389801559, 6.8423362475733, 10.5899888745301, 12.7239395984228, 11.2535655603059, 6.67130863639221, 2.09758177618759, 0.715822721492942, 3.11952774531603, 6.45984059295107, 7.67863959548037, 5.8698352972189, 3.73267237215024, 4.29935507940417, 8.71613513310514, 14.1209557267534, 17.1411225070606, 15.7513862150782, 11.591088506491, 6.91664343005585, 3.55708577708248, 1.84058221285448, 1.76601327144733, 3.2449314047062, 5.79085245526493, 8.80394946932401, 11.7091915758006, 14.0788450440664, 15.5393362977747, 15.9110235339414, 16.5297166899098, 19.4442621501428, 26.2888532411932, 34.3076645022404, 38.1244581868506, 32.8161896839931, 20.5198941666481, 8.68443738249332, 4.59220663875428, 9.3611842598336, 18.2848529089182, 26.5065329675913, 31.6601183218077, 34.3325991866564, 35.268998575764, 34.4937830250616, 30.9568826975136, 23.5425210509909, 13.5256119804392, 6.68786383365874, 9.29863902276834, 24.0995723168223, 45.360812923324, 66.1072822977031, 79.9302050522147, 82.1691437693323, 68.5), Event_05 = c(16.7, 12.5441855252254, 8.34362855313822, 4.41787723956478, 1.16077854846054, -0.647604745472042, -0.102110924095139, 3.42734525580004, 8.69945934039577, 13.6936357920166, 16.5426115931125, 16.7863788697185, 14.7114273859331, 10.6679443818312, 5.70292384305104, 1.33062045188958, -1.00570088424742, -1.23500541105728, -0.443565715518948, 0.270469019624708, 0.430867875687446, 0.219612015509464,-0.149146768590174, -0.438982573074371, -0.383864445806345, 0.28110539133936, 1.58317818386767, 3.15147212444825, 4.57761541053009, 5.53765540150872, 5.88705969035364, 5.50442621518658, 4.38475352211244, 2.83961009560673, 1.23387626494397, -0.0308252672118428, -0.423840133383948, 0.613795208423324, 3.5520543963481, 8.45529996748449, 15.2723947903212, 23.7401475293834, 32.3361590952822, 39.0750282927206, 42.3509203413568, 43.5309429168244, 45.3810052995117, 50.2326752001102, 55.7792370358973, 56.9453732853217, 49.0926912335355, 34.4363234760545, 20.347826671831, 14.0435596870459, 16.889231694269, 24.722507025849, 33.1993970759804, 39.0899119313348, 40.4849403612008, 35.6033457132876, 25.4459170193988, 15.162015181805, 10.2069952272305, 12.5038073534301, 17.3163118812153, 19.178412780952, 14.9786059132215, 7.25970437041171, -0.604347935716486, -5.61758775273317, -5.95098499951591, 0), Event_06 = c(0.200000000000003, 3.21195723374961, 2.91277688880917, 0.560254897687049, -2.05636985727843, -0.385342177496417, 11.0198982232709, 35.6383504153214, 63.5633766611203, 79.3142423727135, 69.5804089914321, 40.8067268070998, 9.91756091653917, -7.16459988298072, -7.97813777924387, 0.912050882121392, 12.8810856447921, 23.1414883471404, 28.4554036511809, 25.793723692691, 16.2178646064498, 5.11848074313128, -1.992541269976, -3.15709316491078, -1.14047763321323, 0.984167186195019, 1.55050511578261, 1.24903789796083, 0.99267212460404, 1.27599300936473, 1.70450658459435, 1.77037539775108, 1.21323889676258, 0.445789260871091,-0.00595799836593398, 0.159928249868152, 0.458440840406507, 0.231920619216309, -0.845791438766333, -1.58989495221456, -0.385336742811433, 3.78242759463506, 8.36171130254352, 9.48954873914033, 4.38171976037601, -1.29680984133125, 2.09435916378687, 22.6619079955276, 52.1929965789649, 72.7336251386671, 67.6180549702337, 40.6933654193044, 11.239976165459, -1.86603302731491, 3.99253266797744, 16.0704981381424, 21.3020418888169, 15.5988071458265, 5.51710113049003, -1.84161036334854, -3.29978054262248, -1.53144236051194,0.324981014347511, 0.542957418819504, 0.057571791228776, 0.0977693332278966, 1.58852495124615, 4.72485925034064, 9.59449650044407, 16.333957067782, 25.2304086651805, 36.6), Event_07 = c(95.2, 76.1548247486645, 59.6586136306095, 45.6093831918477, 33.9423668154075, 24.7862563157951, 18.3324065179457, 14.634384352318, 12.8083634438743, 11.5801645978504, 9.79825093696731, 7.4297446084957, 5.03517565978141, 3.14826377150478, 1.90728741404065, 1.18535234439483, 0.850399016222747, 0.765688024540133, 0.790533079251887, 0.787463444447199, 0.704255489633026, 0.578907528169755, 0.453249081830991, 0.348475330352227, 0.258355860910787, 0.174851405852688, 0.0964871090569559, 0.0327855784719879, -0.00572308803209142, -0.0156597578578521, -0.00884359971674018, 0.000968590840131486, 0.00419573731708972,0.00261329431342138, -9.09505304274809e-05, -0.00111442420552958, -0.000763245577884933, -2.55715306000146e-05, 0.000293192589109531, 0.000220612911431297, 2.14481121962924e-05, -7.63164479522141e-05, -6.31710642299776e-05, -9.93804095763098e-06, 1.96226163098208e-05, 1.79327561048159e-05, 3.84839742201031e-06, -4.97282581467029e-06, -5.04954447277398e-06, -1.36223439657862e-06, 1.23814239614973e-06, 1.41090271441616e-06, 4.5641091458994e-07, -3.01436674867037e-07, -3.91276230231932e-07, -1.47267785942592e-07, 7.12280875316584e-08, 1.07711900092643e-07, 4.62184444957681e-08, -1.61336700389717e-08, -2.94398034967966e-08, -1.42035750258855e-08, 3.42607864455438e-09, 8.01398230033908e-09, 4.32193822646381e-09, -6.58441811773969e-10, -2.26382218255561e-09, -1.42198982466289e-09, 1.17426517505667e-10, 9.78554312547201e-10, 9.39412140045312e-10, 0), Event_08 = c(0, 1.97501653865401e-08, 2.05730889443126e-08, 2.4687706733175e-09, -2.98958604193838e-08, -4.7594512147815e-08, -1.38430558064977e-08, 9.08642661983835e-08, 1.68485661499827e-07, 7.20297481507733e-08, -2.98615425416837e-07, -6.18941317897945e-07, -3.39193670145872e-07, 9.71694833170912e-07, 2.2645309233768e-06, 1.49749662469696e-06, -3.09615237496876e-06, -8.22617670081403e-06, -6.33739327863645e-06, 9.5955658471037e-06, 2.96627654318938e-05, 2.60306590192294e-05, -2.86395645540243e-05, -0.000106161432466867, -0.000104548502293633, 8.09085621931325e-05, 0.00037701758771131, 0.000412545144899753, -0.000208936998112408, -0.00132810607080896, -0.0016044741221854, 0.00045092430153756, 0.00463815752579488, 0.00616406993073543, -0.000537614894473244, -0.0160464462307734, -0.0234296124477496, -0.00191214051997395, 0.0698170074469639, 0.215512223619295, 0.459623656783214, 0.799751893985649, 1.07405445711749, 1.06206274008542, 0.661953765095714, 0.700152437077675, 2.43983433716472, 7.04433746722357, 14.6038081719702, 24.5678022338879, 36.3312872203864, 48.6238792232563, 59.6746002306471, 67.6951962632725, 70.7922877076959, 66.9731659443241, 54.3618951606746, 34.9361708366816, 15.2429751661605, 2.0204286555642, -2.00088262805462, -0.0666446439867805, 4.09875232125227, 7.73168437068042, 9.87971008735865, 9.79286579712875, 7.2765866996866, 3.47004291329713, -0.291549104269716, -2.76213061017673, -2.97089793738165, 0)), class = "data.frame", row.names = c(NA, -72L))
我想绘制将通过所有给定点的平滑曲线。我已经为它使用了样条插值,但它在某些时候给出了一些负值,我想放弃。我尝试在同一个 canvas 上使用 ggplot
和 geom_line
绘制多个图表,但它没有为图表生成图例。我在这个论坛上经历了一些类似的问题,并按照某些问题中的建议更改了 aes
中的 colour
位置,但随后它产生了图例,但颜色与分配给它们的数据不匹配。
下面是我试过的:
p <- ggplot() + geom_point() + geom_line(data = spl_01, aes(x = x, y = y), colour ="blue") +
geom_line(data = spl_02, aes(x = x, y = y), colour = "grey0" ) +
geom_line(data = spl_03, aes(x = x, y = y), colour = "dodgerblue3") +
geom_line(data = spl_04, aes(x = x, y = y), colour = "yellowgreen") +
geom_line(data = spl_05, aes(x = x, y = y), colour = "orange") +
geom_line(data = spl_06, aes(x = x, y = y), colour = "deeppink2") +
geom_line(data = spl_07, aes(x = x, y = y), colour = "darkmagenta") +
geom_line(data = spl_08, aes(x = x, y = y), colour = "deepskyblue3") +
scale_color_manual("", values = c("blue" = "Event_01","grey0" = "Event_02","dodgerblue3" = "Event_03","yellowgreen"= "Event_04","orange" = "Event_05",
"deeppink2" = "Event_06","darkmagenta" = "Event_07","deepskyblue3" = "Event_08")) +
ggtitle("Hourly Rainfall on Extreme Event")
p <- p + scale_y_continuous(expand = expansion(mult = c(0, 0.05)), limits = c(-10, 100), breaks = c(-10,0,10,20,30,40,50,60,70,80,90),
labels = c("-10","0","10","20","30","40","50","60","70","80","90")) +
scale_x_continuous(expand = expansion(mult = c(0.024, 0.05)),
limits = c(0,23.5), breaks = c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23),
labels = c("0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23")) +
theme(axis.text.x=element_text(color = "black", size=12, face = "bold", vjust = 0.01)) +
theme(axis.text.y = element_text(color = "black", size=12, face = "bold", hjust = -0.3))
p <- p + theme( axis.line = element_line(colour = "black", size = 0.5, linetype = "solid")) + labs( y = "RAIN (mm)") + labs(x = "HOUR")
p <- p + theme(plot.title = element_text(colour = "red4", size = "18", face = "bold", hjust = 0.5, vjust = 0.5),
axis.title=element_text(colour = "blue2", size = 14, face="bold", vjust = 0.1))
听起来你想将负值强制为 0 然后绘图。如果您先将数据转换为 'long' 格式,这会容易得多。
您的自定义配色方案也很接近,但是您交换了名称和值。名称应该是要匹配的数据标签,颜色应该是向量中的实际值。
这是使用您共享的插值数据的一种方法:
library(tidyverse)
# set your manual color scheme
color_scheme <- setNames(
c(
"blue",
"grey0",
"dodgerblue3",
"yellowgreen",
"orange",
"deeppink2",
"darkmagenta",
"deepskyblue3"
),
names(spl)[-1]
)
spl %>%
mutate_at(.vars = vars(-x), function(x){ifelse(x < 0, 0, x)}) %>%
pivot_longer(-x, names_to = "event", values_to = "value") %>%
ggplot(aes(x = x, y = value, color = event)) +
geom_line(size = 1) +
scale_color_manual(values = color_scheme) +
ggtitle("Hourly Rainfall on Extreme Event")
这给出了以下情节:
然后您可以根据需要进一步自定义美学。