Increase line width without stochastic bars ggplot

一曲冷凌霜 提交于 2019-12-11 06:10:56

问题


Does anyone know if it's possible to increase the line width in ggplot2 in a smooth fashion without adding random lines that stick out? Here's my original line plot and with size increased to 5:

> ggplot(curve.df, aes(x=recall, y=precision, color=cutoff)) +
>   geom_line(size=1)

Ideally, the final image would look something like the following plot from the PRROC Package, but I have another problem with plotting from there in that gridlines and ablines do not correspond to the axis tickmarks.

Here I first called

> grid()

and then called

> abline(v=seq(0,1,.2), h=seq(0,1,.2))

Honestly would appreciate any way to be able to draw this curve with a wider line to see clear colors and a grid that corresponds to the axis tickmarks. Thanks!

Here's a sample of the data from cutoff .5 to .7:

> dput(output)
structure(list(recall = c(0.0237648530331457, 0.024390243902439, 
0.0250156347717323, 0.0256410256410256, 0.0256410256410256, 0.0268918073796123, 
0.0275171982489056, 0.0281425891181989, 0.0293933708567855, 0.0300187617260788, 
0.0300187617260788, 0.0300187617260788, 0.0306441525953721, 0.0312695434646654, 
0.0312695434646654, 0.0312695434646654, 0.0318949343339587, 0.0318949343339587, 
0.0318949343339587, 0.032520325203252, 0.0331457160725453, 0.0331457160725453, 
0.0337711069418387, 0.034396497811132, 0.034396497811132, 0.0350218886804253, 
0.0356472795497186, 0.0356472795497186, 0.0362726704190119, 0.0362726704190119, 
0.0362726704190119, 0.0387742338961851, 0.0387742338961851, 0.0387742338961851, 
0.0393996247654784, 0.0400250156347717, 0.0400250156347717, 0.040650406504065, 
0.040650406504065, 0.040650406504065, 0.0412757973733583, 0.0419011882426517, 
0.042526579111945, 0.0431519699812383, 0.0431519699812383, 0.0437773608505316, 
0.0444027517198249, 0.0450281425891182, 0.0456535334584115, 0.0456535334584115, 
0.0462789243277048, 0.0469043151969981, 0.0469043151969981, 0.0469043151969981, 
0.0469043151969981, 0.0475297060662914, 0.0481550969355847, 0.0481550969355847, 
0.0494058786741714, 0.0494058786741714, 0.0494058786741714, 0.0494058786741714, 
0.0512820512820513, 0.0512820512820513, 0.0531582238899312, 0.0537836147592245, 
0.0537836147592245, 0.0537836147592245, 0.0550343964978111, 0.0556597873671044, 
0.0556597873671044, 0.0562851782363977, 0.0569105691056911, 0.0575359599749844, 
0.0581613508442777, 0.058786741713571, 0.0594121325828643, 0.0594121325828643, 
0.0600375234521576, 0.0606629143214509, 0.0612883051907442, 0.0625390869293308, 
0.0631644777986241, 0.0637898686679174, 0.0644152595372108, 0.0644152595372108, 
0.0644152595372108, 0.0650406504065041, 0.0650406504065041, 0.0656660412757974, 
0.0656660412757974, 0.0662914321450907, 0.066916823014384, 0.0687929956222639, 
0.0694183864915572, 0.0700437773608505, 0.0700437773608505, 0.0706691682301438, 
0.0712945590994371, 0.0712945590994371, 0.0712945590994371, 0.0712945590994371, 
0.0712945590994371, 0.0712945590994371, 0.0719199499687305, 0.0725453408380238, 
0.0725453408380238, 0.0731707317073171, 0.075046904315197, 0.075046904315197, 
0.0756722951844903, 0.0762976860537836, 0.0769230769230769, 0.0775484677923702, 
0.0775484677923702, 0.0787992495309568, 0.0794246404002502, 0.0794246404002502, 
0.0794246404002502, 0.0800500312695435, 0.0800500312695435, 0.0806754221388368, 
0.0813008130081301, 0.0813008130081301, 0.0819262038774234, 0.0825515947467167, 
0.08317698561601, 0.08317698561601, 0.0850531582238899, 0.0863039399624766, 
0.0863039399624766, 0.0869293308317699, 0.0881801125703565, 0.0888055034396498, 
0.0888055034396498, 0.0900562851782364, 0.0919324577861163, 0.0919324577861163, 
0.0925578486554096, 0.0931832395247029, 0.0931832395247029, 0.0931832395247029, 
0.0938086303939962, 0.0944340212632895, 0.0944340212632895, 0.0956848030018762, 
0.0956848030018762, 0.0963101938711695, 0.0963101938711695, 0.0963101938711695, 
0.0963101938711695, 0.0975609756097561, 0.0981863664790494, 0.0988117573483427, 
0.0988117573483427, 0.099437148217636, 0.099437148217636, 0.100062539086929, 
0.100687929956223, 0.101313320825516, 0.103189493433396, 0.103814884302689, 
0.103814884302689, 0.103814884302689, 0.105065666041276, 0.105691056910569, 
0.106316447779862, 0.106316447779862, 0.106941838649156, 0.107567229518449, 
0.107567229518449, 0.107567229518449, 0.108192620387742, 0.108818011257036, 
0.109443402126329, 0.110694183864916, 0.110694183864916, 0.111319574734209, 
0.111319574734209, 0.111319574734209, 0.112570356472795, 0.114446529080675, 
0.114446529080675, 0.114446529080675, 0.114446529080675, 0.115071919949969, 
0.115697310819262, 0.118198874296435, 0.119449656035022, 0.119449656035022, 
0.119449656035022, 0.120700437773609, 0.120700437773609, 0.121325828642902, 
0.121951219512195, 0.121951219512195, 0.122576610381488, 0.122576610381488, 
0.122576610381488, 0.122576610381488, 0.123202001250782, 0.123827392120075, 
0.125703564727955, 0.127579737335835, 0.127579737335835, 0.127579737335835, 
0.127579737335835, 0.127579737335835, 0.128830519074422, 0.128830519074422, 
0.129455909943715, 0.129455909943715, 0.130706691682301, 0.131957473420888, 
0.132582864290181, 0.132582864290181, 0.134459036898061, 0.135084427767355, 
0.136335209505941, 0.136960600375235, 0.136960600375235, 0.136960600375235, 
0.137585991244528, 0.138211382113821, 0.138211382113821, 0.138836772983114, 
0.140712945590994, 0.140712945590994, 0.141338336460288, 0.141338336460288, 
0.141963727329581, 0.141963727329581, 0.149468417761101), precision = c(0.584615384615385, 
0.590909090909091, 0.597014925373134, 0.602941176470588, 0.594202898550725, 
0.597222222222222, 0.594594594594595, 0.6, 0.602564102564103, 
0.607594936708861, 0.6, 0.592592592592593, 0.597560975609756, 
0.595238095238095, 0.588235294117647, 0.581395348837209, 0.579545454545455, 
0.573033707865168, 0.566666666666667, 0.571428571428571, 0.56989247311828, 
0.563829787234043, 0.568421052631579, 0.572916666666667, 0.56701030927835, 
0.571428571428571, 0.575757575757576, 0.57, 0.568627450980392, 
0.563106796116505, 0.557692307692308, 0.553571428571429, 0.548672566371681, 
0.543859649122807, 0.538461538461538, 0.542372881355932, 0.53781512605042, 
0.541666666666667, 0.537190082644628, 0.532786885245902, 0.536585365853659, 
0.540322580645161, 0.544, 0.543307086614173, 0.5390625, 0.538461538461538, 
0.537878787878788, 0.537313432835821, 0.540740740740741, 0.536764705882353, 
0.536231884057971, 0.531914893617021, 0.528169014084507, 0.524475524475524, 
0.520833333333333, 0.524137931034483, 0.523809523809524, 0.52027027027027, 
0.526666666666667, 0.52317880794702, 0.516339869281046, 0.512987012987013, 
0.522292993630573, 0.518987341772152, 0.527950310559006, 0.52760736196319, 
0.524390243902439, 0.521212121212121, 0.526946107784431, 0.529761904761905, 
0.526627218934911, 0.526315789473684, 0.526011560693642, 0.528735632183908, 
0.531428571428571, 0.531073446327684, 0.527777777777778, 0.524861878453039, 
0.524590163934426, 0.527173913043478, 0.52972972972973, 0.529100529100529, 
0.528795811518325, 0.525773195876289, 0.528205128205128, 0.525510204081633, 
0.517587939698492, 0.52, 0.517412935323383, 0.51980198019802, 
0.51219512195122, 0.514563106796116, 0.514423076923077, 0.52132701421801, 
0.523584905660377, 0.523364485981308, 0.52093023255814, 0.518348623853211, 
0.520547945205479, 0.518181818181818, 0.515837104072398, 0.511210762331839, 
0.508928571428571, 0.506666666666667, 0.508849557522124, 0.5, 
0.497854077253219, 0.497872340425532, 0.504201680672269, 0.502092050209205, 
0.504166666666667, 0.506224066390041, 0.506172839506173, 0.508196721311475, 
0.506122448979592, 0.510121457489879, 0.51004016064257, 0.508, 
0.503968253968254, 0.498054474708171, 0.496124031007752, 0.494252873563218, 
0.492424242424242, 0.490566037735849, 0.488805970149254, 0.488888888888889, 
0.488970588235294, 0.487179487179487, 0.489208633093525, 0.48936170212766, 
0.487632508833922, 0.48943661971831, 0.493006993006993, 0.491349480968858, 
0.487972508591065, 0.491467576791809, 0.496621621621622, 0.493288590604027, 
0.486842105263158, 0.486928104575163, 0.485342019543974, 0.482200647249191, 
0.482315112540193, 0.482428115015974, 0.480891719745223, 0.481132075471698, 
0.479623824451411, 0.48125, 0.479750778816199, 0.478260869565217, 
0.476780185758514, 0.478527607361963, 0.480122324159021, 0.480243161094225, 
0.478787878787879, 0.478915662650602, 0.477477477477477, 0.479041916167665, 
0.476331360946746, 0.47787610619469, 0.478260869565217, 0.479768786127168, 
0.478386167146974, 0.474285714285714, 0.473239436619718, 0.472067039106145, 
0.472222222222222, 0.470914127423823, 0.472375690607735, 0.471232876712329, 
0.464864864864865, 0.463611859838275, 0.46505376344086, 0.466487935656836, 
0.467914438502674, 0.468253968253968, 0.467018469656992, 0.467191601049869, 
0.464751958224543, 0.463541666666667, 0.465116279069767, 0.465648854961832, 
0.464467005076142, 0.462121212121212, 0.46095717884131, 0.462311557788945, 
0.461346633416459, 0.466666666666667, 0.466992665036675, 0.465853658536585, 
0.463592233009709, 0.463942307692308, 0.462829736211031, 0.463007159904535, 
0.464285714285714, 0.463182897862233, 0.462264150943396, 0.460093896713615, 
0.456876456876457, 0.455813953488372, 0.454965357967667, 0.456221198156682, 
0.457858769931663, 0.461538461538462, 0.460496613995485, 0.458426966292135, 
0.453333333333333, 0.452328159645233, 0.45374449339207, 0.452747252747253, 
0.453947368421053, 0.451965065502183, 0.453362255965293, 0.455723542116631, 
0.456896551724138, 0.455913978494624, 0.459401709401709, 0.460554371002132, 
0.461864406779661, 0.463002114164905, 0.461052631578947, 0.460084033613445, 
0.460251046025105, 0.459459459459459, 0.457556935817805, 0.457731958762887, 
0.458248472505092, 0.456389452332657, 0.456565656565657, 0.455645161290323, 
0.455823293172691, 0.454909819639279, 0.449248120300752), cutoff = c(0.7, 
0.695652173913043, 0.694444444444444, 0.694117647058824, 0.693333333333333, 
0.692307692307692, 0.691358024691358, 0.691176470588235, 0.690140845070423, 
0.689655172413793, 0.688888888888889, 0.688311688311688, 0.6875, 
0.686746987951807, 0.686567164179104, 0.686046511627907, 0.685714285714286, 
0.684210526315789, 0.683544303797468, 0.683333333333333, 0.680555555555556, 
0.68, 0.67948717948718, 0.67741935483871, 0.676923076923077, 
0.676056338028169, 0.675675675675676, 0.675324675324675, 0.671641791044776, 
0.671428571428571, 0.671052631578947, 0.666666666666667, 0.662650602409639, 
0.662162162162162, 0.661764705882353, 0.661538461538462, 0.658536585365854, 
0.657894736842105, 0.657534246575342, 0.657142857142857, 0.65625, 
0.653846153846154, 0.653333333333333, 0.652777777777778, 0.652173913043478, 
0.650602409638554, 0.65, 0.648648648648649, 0.647887323943662, 
0.647058823529412, 0.645569620253165, 0.643835616438356, 0.64367816091954, 
0.642857142857143, 0.641975308641975, 0.640625, 0.64, 0.639344262295082, 
0.638888888888889, 0.63855421686747, 0.63768115942029, 0.6375, 
0.636363636363636, 0.635135135135135, 0.633802816901408, 0.631578947368421, 
0.63013698630137, 0.62962962962963, 0.628571428571429, 0.627118644067797, 
0.626865671641791, 0.625, 0.623529411764706, 0.622950819672131, 
0.622222222222222, 0.621951219512195, 0.621621621621622, 0.621212121212121, 
0.619718309859155, 0.619047619047619, 0.618421052631579, 0.617647058823529, 
0.617283950617284, 0.616438356164384, 0.615384615384615, 0.614035087719298, 
0.613333333333333, 0.6125, 0.611940298507463, 0.611764705882353, 
0.61038961038961, 0.609375, 0.609195402298851, 0.608695652173913, 
0.608108108108108, 0.607594936708861, 0.606060606060606, 0.605633802816901, 
0.605263157894737, 0.604938271604938, 0.604651162790698, 0.602941176470588, 
0.602739726027397, 0.602564102564103, 0.602272727272727, 0.6, 
0.597826086956522, 0.597402597402597, 0.597222222222222, 0.597014925373134, 
0.596774193548387, 0.594936708860759, 0.594202898550725, 0.593220338983051, 
0.592592592592593, 0.591549295774648, 0.590909090909091, 0.590361445783133, 
0.588235294117647, 0.586666666666667, 0.585365853658537, 0.584615384615385, 
0.583333333333333, 0.582278481012658, 0.582089552238806, 0.581081081081081, 
0.580645161290323, 0.580246913580247, 0.579710144927536, 0.578947368421053, 
0.578313253012048, 0.578125, 0.577464788732394, 0.576923076923077, 
0.575342465753425, 0.575, 0.573333333333333, 0.573170731707317, 
0.571428571428571, 0.569620253164557, 0.569230769230769, 0.568965517241379, 
0.567901234567901, 0.567567567567568, 0.567164179104478, 0.565789473684211, 
0.565217391304348, 0.564705882352941, 0.563380281690141, 0.5625, 
0.561797752808989, 0.561643835616438, 0.560975609756098, 0.560606060606061, 
0.55952380952381, 0.558823529411765, 0.558441558441558, 0.557377049180328, 
0.557142857142857, 0.556962025316456, 0.555555555555556, 0.55421686746988, 
0.554054054054054, 0.552631578947368, 0.552238805970149, 0.551282051282051, 
0.550724637681159, 0.55, 0.549295774647887, 0.547945205479452, 
0.546666666666667, 0.546511627906977, 0.544117647058823, 0.54320987654321, 
0.542168674698795, 0.541666666666667, 0.541176470588235, 0.540540540540541, 
0.53968253968254, 0.539473684210526, 0.538461538461538, 0.537313432835821, 
0.536585365853659, 0.536231884057971, 0.535714285714286, 0.535211267605634, 
0.534246575342466, 0.533333333333333, 0.532467532467532, 0.531645569620253, 
0.53125, 0.529411764705882, 0.528571428571429, 0.527777777777778, 
0.527272727272727, 0.527027027027027, 0.526315789473684, 0.525641025641026, 
0.525, 0.524590163934426, 0.524390243902439, 0.523255813953488, 
0.523076923076923, 0.522388059701492, 0.521739130434783, 0.52112676056338, 
0.520547945205479, 0.52, 0.519480519480519, 0.518987341772152, 
0.518518518518518, 0.518072289156627, 0.517647058823529, 0.515151515151515, 
0.514285714285714, 0.513888888888889, 0.513513513513513, 0.513157894736842, 
0.512820512820513, 0.5125, 0.51219512195122, 0.511627906976744, 
0.508196721311475, 0.507692307692308, 0.507462686567164, 0.507246376811594, 
0.507042253521127, 0.506849315068493, 0.506666666666667, 0.506493506493506, 
0.506329113924051, 0.505747126436782, 0.5)), .Names = c("recall", 
"precision", "cutoff"), row.names = 55:287, class = "data.frame")

回答1:


Setting lineend = "round" greatly improves the plot

ggplot(curve.df, aes(x = recall, y = precision, color = cutoff)) +
   geom_line(size = 5, lineend = "round") 



回答2:


ggplot can't plot a single line with multiple colors. The "stochastic" bits of your plot are actually the tops and bottoms of super little short lines (that are much thicker than they are long) connecting points that are close enough together in cutoff to share the same color.

Luckily, your data is so dense, a line plot is actually unnecessary. We can just plot points and all the problems go away - if we make them big enough, which seems to be what you want. (You will see the individual points if your zoom in on the data excerpt provided, but I expanded the limits to make show the data density on the size of plot you are really using. The average difference in recall between adjacent points is .00054, so on the scale of 0 to 1 your data is very dense!)

I also show a version with a loess smoother - you can of course play with the bandwidth for more or less smoothing. This may or may not be preferable.

raw_plot = ggplot(df, aes(recall, precision, color = cutoff)) + 
    geom_point(size = 3) + 
    coord_fixed(xlim = c(0, 1), ylim = c(0, 1)) +
    labs(title = "Raw")

df$smooth = predict(loess(precision ~ recall, data = df))
smooth_plot = ggplot(df, aes(recall, smooth, color = cutoff)) +
    geom_point(size = 3) +
    coord_fixed(xlim = c(0, 1), ylim = c(0, 1)) + 
    labs(title = "Smooth")

gridExtra::grid.arrange(raw_plot, smooth_plot, nrow = 1)



来源:https://stackoverflow.com/questions/38861698/increase-line-width-without-stochastic-bars-ggplot

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!