2016-06-22 11 views
0

私は以下のように2つのグループの平均と95%の信頼バンドを示すプロットを作成しました。プロットについては、すでにさまざまな線種、塗りつぶし、色を使用しています。ggplot:プロットや縦線に複数の凡例を追加するにはどうすればよいですか?

データplot_bandは以下の通りです。

dput(plot_band) 
structure(list(mean = c(0.0909296772008702, 0.0949102886382386, 
0.0989192140983566, 0.102428753920507, 0.106190021551613, 0.109834234007574, 
0.11282406874623, 0.116443987192088, 0.119646042014149, 0.122877131667032, 
0.125734341129646, 0.129194412319665, 0.131921946416482, 0.13467000293138, 
0.137801823091921, 0.140320771073742, 0.143300871011905, 0.145703574224808, 
0.148502607395268, 0.151216269559201, 0.153957673466713, 0.15642722394871, 
0.159399752204122, 0.16158535629103, 0.163992551285173, 0.166446319141126, 
0.168796463238069, 0.17130024918415, 0.17319290052143, 0.175970079857704, 
0.178037138778032, 0.180359643729028, 0.182563083353043, 0.184882067722455, 
0.186933337196788, 0.18928611634363, 0.19095095692481, 0.193552969255731, 
0.195137836881874, 0.197581990963152, 0.199824696342001, 0.201576167030431, 
0.203292777876833, 0.205785273925517, 0.207611128924057, 0.209067294675698, 
0.211624327477106, 0.213018027996152, 0.215073900329166, 0.21654896049152, 
0.218432328738047, 0.220299232072702, 0.221520169903876, 0.224082916931098, 
0.225373663731495, 0.227623092060467, 0.228971037740905, 0.230665903341562, 
0.232255049713341, 0.233816039663021, 0.236156033603955, 0.237722706454038, 
0.239326639984125, 0.241061288510212, 0.323782287073584, 0.325539303794681, 
0.326575563604555, 0.327932235745535, 0.329326904419804, 0.330270965006864, 
0.331794972975829, 0.332736401387824, 0.333736983920265, 0.334858878358806, 
0.335995344145518, 0.336884010919713, 0.337760950823761, 0.338470035342276, 
0.339694375762279, 0.340590586642847, 0.340934410282471, 0.342186505998774, 
0.342699699846757, 0.343822718137376, 0.344352069575663, 0.345191547743302, 
0.345986783878912, 0.346908459064914, 0.347636673707646, 0.3483601957891, 
0.349017016236978, 0.349393026672962, 0.350215046428817, 0.350578051082168, 
0.351357872622786, 0.351833990930714, 0.352451422717008, 0.352852417773313, 
0.353786047124291, 0.354360144310735, 0.354804607588953, 0.355216156665893, 
0.3556114518015, 0.356570758245453, 0.357097049535425, 0.357671243406622, 
0.35787930232607, 0.358500009058086, 0.359107586207553, 0.359418346394681, 
0.359923090516015, 0.360327770652831, 0.360646653761867, 0.361526704703965, 
0.361860340596181, 0.362284616802613, 0.362408547406209, 0.363068975461424, 
0.363173638916247, 0.363746165222553, 0.364318465554143, 0.364550369183249, 
0.365263491228022, 0.365588246738469, 0.366124420845147, 0.366327320718437, 
0.366730809501062, 0.367298014408034), p2.5 = c(0.00920236578162877, 
0.0111305911426958, 0.0131257550019632, 0.015586474005665, 0.017588259827762, 
0.0195835240844649, 0.021653464115484, 0.0245221378289171, 0.0263028370478539, 
0.0283125178459841, 0.030809139661692, 0.034224299031932, 0.0351514351131448, 
0.0374690177003245, 0.0401208217539481, 0.0416432632702995, 0.0436268495854353, 
0.0455924496480308, 0.0481710615607138, 0.0498487868097217, 0.052013860735697, 
0.0541864115090449, 0.0559355297931858, 0.0582185384506931, 0.0595049507852038, 
0.0617291057747846, 0.0624904066599628, 0.064090526611587, 0.0665855608482458, 
0.0681610015253132, 0.0689510143842853, 0.0714235246023074, 0.0730718365551066, 
0.0733828347805513, 0.0749772653575311, 0.0775677990166739, 0.0782434582066251, 
0.0809696065399504, 0.0800620502625316, 0.0822097262074474, 0.0837314882447324, 
0.0836800886932387, 0.0843305338836378, 0.0862036703259026, 0.0874082656018874, 
0.0881312854081838, 0.0887921830279765, 0.0892805555426737, 0.0901061351380764, 
0.0914750995958728, 0.0913838119125662, 0.0926827936869315, 0.0929511644196126, 
0.0940218350370357, 0.0944327299872979, 0.0953545299910439, 0.0948298565703383, 
0.0957001873318579, 0.0961251564147676, 0.0971098251546806, 0.0974911491380601, 
0.0986598120212823, 0.0982370236835561, 0.0987719638365328, 0.114148199394403, 
0.125138552629865, 0.133069438084806, 0.140931059768343, 0.147647282172844, 
0.155831735418124, 0.163154010787227, 0.16809087346053, 0.173413948644787, 
0.178336300631342, 0.183561163161725, 0.189552221591194, 0.192350001446747, 
0.19547327255232, 0.19824967633061, 0.202611107184988, 0.205071997319457, 
0.206232495037667, 0.208471493073236, 0.209717390943683, 0.211692880593303, 
0.213829033311537, 0.215383413348152, 0.216370831366554, 0.216980537940184, 
0.217670415960084, 0.218147500129008, 0.219104770868165, 0.220215949003459, 
0.219501167154474, 0.219635297722562, 0.220565169003312, 0.218821371303922, 
0.218910618214851, 0.219518190869959, 0.219204079206471, 0.219448334243776, 
0.219174641398391, 0.217619259716122, 0.217993716481521, 0.218343413130982, 
0.217141573568049, 0.216438618727695, 0.215672180354215, 0.214841486865522, 
0.214092486614703, 0.216084004877199, 0.213891621307228, 0.213397326450924, 
0.212530621813324, 0.212650230928244, 0.211323326285971, 0.211512467761759, 
0.209879967307571, 0.208388878793908, 0.209257043929222, 0.207665115418059, 
0.207413292377895, 0.204980142991601, 0.206053394727878, 0.205039712521127, 
0.203155679138143, 0.202289445844638, 0.201779149557556), p97.5 = c(0.240681337890249, 
0.239988615023241, 0.239222274397932, 0.23882694927308, 0.239567463457127, 
0.240035884370459, 0.239971640602537, 0.242348644629734, 0.244241554912481, 
0.246794068956881, 0.248869825514075, 0.252843804762058, 0.254595507587193, 
0.257498240756364, 0.26074636531938, 0.263991307688752, 0.268222101449506, 
0.270245299020079, 0.278955701793892, 0.280366963871541, 0.286253886155709, 
0.290942761721134, 0.29709853936211, 0.300641051539586, 0.307350564223005, 
0.314475951046524, 0.31757563389217, 0.324250050938626, 0.326645521042049, 
0.334746718583917, 0.341297900171566, 0.347056902406046, 0.352412986039391, 
0.356409285744598, 0.364329251893085, 0.36882469705109, 0.373595444661095, 
0.379308956442793, 0.388012909521406, 0.393418480355642, 0.399407258087214, 
0.403270925317011, 0.407517084163824, 0.413742327029277, 0.42089783652825, 
0.422996679448412, 0.430738094720356, 0.433915405828653, 0.438263395419797, 
0.442376801773873, 0.450664409546504, 0.453854917168461, 0.455755257192578, 
0.463879371708031, 0.470262095557133, 0.478816677993115, 0.478998770025097, 
0.485204929246363, 0.490588733478761, 0.49747652543363, 0.498792119487052, 
0.508008619470507, 0.51314092048762, 0.518568532547669, 0.579810955268174, 
0.563256045407579, 0.55093710586083, 0.541241619905278, 0.532667775608687, 
0.523824194956849, 0.518816497858615, 0.512618467188886, 0.506452368044292, 
0.501653171003674, 0.499276681561068, 0.496002704329641, 0.494256887981196, 
0.49200837587611, 0.490570113245846, 0.491077058931435, 0.487352049845066, 
0.487927727831147, 0.487928022062059, 0.488900063808496, 0.488866145012628, 
0.489808465409391, 0.491100206396406, 0.492044173457154, 0.494346147046575, 
0.494980820850837, 0.49616843086841, 0.497216550345458, 0.499201695431901, 
0.501160614633382, 0.502598288902507, 0.504203085629905, 0.50530488873578, 
0.508449115699177, 0.508914783054669, 0.51306711977087, 0.51479783743171, 
0.51648055644086, 0.518549503653961, 0.522859455223989, 0.522598786005884, 
0.52736459871623, 0.527054294078792, 0.532359397607223, 0.532643025946804, 
0.533817320437782, 0.535862852499484, 0.539613602346564, 0.54138065631686, 
0.544340213112881, 0.545596882887723, 0.549029532028693, 0.546769636775625, 
0.551728290583129, 0.552996735997194, 0.555676593069663, 0.559580922687426, 
0.561700216317917, 0.562726465369815, 0.563527127546323, 0.567715046522725, 
0.568850181180136, 0.56965258128659, 0.571847219713553), outcome = 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, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 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, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("DLT", 
"CB"), class = "factor"), exp_X_post = c(721.595263503532, 794.40305777437, 
865.319646465533, 933.669956578678, 999.728550839186, 1062.12810757171, 
1121.92986212885, 1186.37187215809, 1246.1267376175, 1305.33376392859, 
1359.36602305224, 1421.23758898206, 1472.44041133326, 1520.62395309786, 
1584.09764621781, 1634.01654454251, 1685.34860459111, 1735.26374323406, 
1785.87871337346, 1840.42999799797, 1888.32905203148, 1937.38674685726, 
1990.74583676908, 2041.61942276328, 2083.76909363497, 2134.07414000003, 
2177.97560514382, 2227.25787768033, 2269.76501622686, 2319.50659548171, 
2360.78992430352, 2404.37623851091, 2449.36656617313, 2500.80748523146, 
2540.71467060956, 2588.5685157055, 2630.93535458068, 2675.04099554242, 
2709.53185769419, 2763.12669881888, 2807.24737149465, 2849.03542063784, 
2887.16961904492, 2927.78459960731, 2973.91123171086, 3006.0197134382, 
3056.06581532434, 3089.41001229951, 3132.29020081068, 3177.35838641843, 
3212.66669292569, 3256.19625640177, 3284.73766167032, 3330.28770837953, 
3368.28973519186, 3409.05190043795, 3449.93435443996, 3485.59367731521, 
3524.70884576068, 3557.60265444533, 3615.06476720162, 3648.55074883409, 
3688.13510762386, 3727.38208940522, 721.595263503532, 794.40305777437, 
865.319646465533, 933.669956578678, 999.728550839186, 1062.12810757171, 
1121.92986212885, 1186.37187215809, 1246.1267376175, 1305.33376392859, 
1359.36602305224, 1421.23758898206, 1472.44041133326, 1520.62395309786, 
1584.09764621781, 1634.01654454251, 1685.34860459111, 1735.26374323406, 
1785.87871337346, 1840.42999799797, 1888.32905203148, 1937.38674685726, 
1990.74583676908, 2041.61942276328, 2083.76909363497, 2134.07414000003, 
2177.97560514382, 2227.25787768033, 2269.76501622686, 2319.50659548171, 
2360.78992430352, 2404.37623851091, 2449.36656617313, 2500.80748523146, 
2540.71467060956, 2588.5685157055, 2630.93535458068, 2675.04099554242, 
2709.53185769419, 2763.12669881888, 2807.24737149465, 2849.03542063784, 
2887.16961904492, 2927.78459960731, 2973.91123171086, 3006.0197134382, 
3056.06581532434, 3089.41001229951, 3132.29020081068, 3177.35838641843, 
3212.66669292569, 3256.19625640177, 3284.73766167032, 3330.28770837953, 
3368.28973519186, 3409.05190043795, 3449.93435443996, 3485.59367731521, 
3524.70884576068, 3557.60265444533, 3615.06476720162, 3648.55074883409, 
3688.13510762386, 3727.38208940522)), .Names = c("mean", "p2.5", 
"p97.5", "outcome", "exp_X_post"), row.names = c("pi_A[1]", "pi_A[2]", 
"pi_A[3]", "pi_A[4]", "pi_A[5]", "pi_A[6]", "pi_A[7]", "pi_A[8]", 
"pi_A[9]", "pi_A[10]", "pi_A[11]", "pi_A[12]", "pi_A[13]", "pi_A[14]", 
"pi_A[15]", "pi_A[16]", "pi_A[17]", "pi_A[18]", "pi_A[19]", "pi_A[20]", 
"pi_A[21]", "pi_A[22]", "pi_A[23]", "pi_A[24]", "pi_A[25]", "pi_A[26]", 
"pi_A[27]", "pi_A[28]", "pi_A[29]", "pi_A[30]", "pi_A[31]", "pi_A[32]", 
"pi_A[33]", "pi_A[34]", "pi_A[35]", "pi_A[36]", "pi_A[37]", "pi_A[38]", 
"pi_A[39]", "pi_A[40]", "pi_A[41]", "pi_A[42]", "pi_A[43]", "pi_A[44]", 
"pi_A[45]", "pi_A[46]", "pi_A[47]", "pi_A[48]", "pi_A[49]", "pi_A[50]", 
"pi_A[51]", "pi_A[52]", "pi_A[53]", "pi_A[54]", "pi_A[55]", "pi_A[56]", 
"pi_A[57]", "pi_A[58]", "pi_A[59]", "pi_A[60]", "pi_A[61]", "pi_A[62]", 
"pi_A[63]", "pi_A[64]", "qi_A[1]", "qi_A[2]", "qi_A[3]", "qi_A[4]", 
"qi_A[5]", "qi_A[6]", "qi_A[7]", "qi_A[8]", "qi_A[9]", "qi_A[10]", 
"qi_A[11]", "qi_A[12]", "qi_A[13]", "qi_A[14]", "qi_A[15]", "qi_A[16]", 
"qi_A[17]", "qi_A[18]", "qi_A[19]", "qi_A[20]", "qi_A[21]", "qi_A[22]", 
"qi_A[23]", "qi_A[24]", "qi_A[25]", "qi_A[26]", "qi_A[27]", "qi_A[28]", 
"qi_A[29]", "qi_A[30]", "qi_A[31]", "qi_A[32]", "qi_A[33]", "qi_A[34]", 
"qi_A[35]", "qi_A[36]", "qi_A[37]", "qi_A[38]", "qi_A[39]", "qi_A[40]", 
"qi_A[41]", "qi_A[42]", "qi_A[43]", "qi_A[44]", "qi_A[45]", "qi_A[46]", 
"qi_A[47]", "qi_A[48]", "qi_A[49]", "qi_A[50]", "qi_A[51]", "qi_A[52]", 
"qi_A[53]", "qi_A[54]", "qi_A[55]", "qi_A[56]", "qi_A[57]", "qi_A[58]", 
"qi_A[59]", "qi_A[60]", "qi_A[61]", "qi_A[62]", "qi_A[63]", "qi_A[64]" 
), class = "data.frame") 

ここでは、垂直の破線をいくつか追加します。私は各垂直線ごとに異なる色を使い、それらの線についても凡例を持っています。

range <- range(plot_band$exp_X_post) 
range <- c(floor(range[1]), ceiling(range[2])) 
step <- floor((range[2] - range[1])/10) 

ggplot(plot_band, aes(x = exp_X_post, y = mean, 
           color = outcome, linetype = outcome)) + 
    geom_ribbon(aes(ymin = p2.5, ymax = p97.5, linetype = NA, 
        fill = outcome), 
       alpha = 0.4) + 
    geom_line(size = 1.5) + 
    xlab("Exposure") + 
    ylab("Proability of CB/DLT") + 
    scale_x_continuous(limits = range, 
         breaks = seq(range[1], range[2], by = step) 
         ) + 
    geom_vline(xintercept = observed_mean$gmcmin, 
       linetype = 'longdash') + 
    theme_bw() + 
    theme(legend.position = 'top', 
      plot.margin = unit(c(1, 1, 3, 1), "lines"), 
      legend.title = element_text(size = 15), 
      axis.title.y = element_text(margin = margin(0, 15, 0, 0))) + 
    scale_color_discrete(name = "Probability (95% CI)") + 
    scale_fill_discrete(name = "Probability (95% CI)") + 
    scale_linetype_discrete(name = "Probability (95% CI)") 

注:最後の3行は、凡例のタイトルを変更するために使用される。ここで

dput(observed_mean) structure(list(TRT = structure(1:9, .Label = c("A", "B", "C", "D", "E", "F", "G", "H", "I"), class = "factor"), gmcmin = c(967.117632548, 1306.76729845833, 2394.519441584, 2404.73065902857, 3047.48745766364, 2550.12866139, 1863.6505272925, 3569.57489109, 3660.40695204)), .Names = c("TRT", "gmcmin"), row.names = c(NA, -9L), class = "data.frame") 

プロットを生成するためのコードである:これらの垂直線のための情報は、他のデータフレームobserved_meanにあります変数名outcomeから確率(95%CI)に変更します。それが正しい方法かどうかは確かではありません。

質問:

  1. 私は、その下に、私は垂直線の凡例を入れたいのですが、右に現在の凡例を置くことを望みます。誰かが私にそれをする手がかりを与えることができますか?

  2. プロットに示されているように、2つの同一の(同じ色ではないが)凡例が上にあります。以下のコードで因子outcomeの順序を変更すると、以下のようになります。なぜそれが起こるのか分かりません。どうすればそれを取り除くことができますか?

    plot_band $転帰< - 因子(plot_band $結果、レベル= cで( "DLT"、 "CB"))任意のコメント/提案のため

どうもありがとう!

enter image description here

+2

代わりに、 'dput(plot_band)'の出力を含むように、より良い、より便利です。 – Jaap

+0

ありがとう、私は '' dput(plot_band) ''に変更しました。 –

答えて

1

余分な凡例ボックスは、マッピングのうち、線種を動かすgeom_ribbonaes()であるためlinetype = NAのアップ表示されると、そのの世話をします。ライン標識のため

、あなたはおそらくちょうどここ geom_text

を使用して、プロットにラベルを置くことができることは、より賢明にラベルを配置することになりましたggrepelでそのようなものを(ない完全なプロットである - ことができません平均ラベルが重なるので、あなたは、あなたがそれらをプロットしたい位置を与えるobserved_meanに別の列を追加することにより、それらの、例えば、より慎重に位置する必要があります)(注:

# install.packages("devtools") 
# devtools::install_github("slowkow/ggrepel") 
library(ggrepel) 


ggplot(plot_band, aes(x = exp_X_post, y = mean, 
         color = outcome, linetype = outcome)) + 
    geom_ribbon(aes(ymin = p2.5, ymax = p97.5, 
        fill = outcome), 
       alpha = 0.4 
       , linetype = "blank") + 
    geom_line(size = 1.5) + 
    xlab("Exposure") + 
    ylab("Proability of CB/DLT") + 
    scale_x_continuous(limits = range, 
        breaks = seq(range[1], range[2], by = step) 
) + 
    geom_vline(xintercept = observed_mean$gmcmin 
      , linetype = 'longdash') + 
    geom_text_repel(
    mapping = aes(
     x = gmcmin 
     , y = 0 
     , label = TRT 
     , color = NA 
     , linetype = NA) 
    , data = observed_mean 
    , show.legend = FALSE) + 
    theme_bw() + 
    theme(legend.position = 'top', 
     plot.margin = unit(c(1, 1, 3, 1), "lines"), 
     legend.title = element_text(size = 15), 
     axis.title.y = element_text(margin = margin(0, 15, 0, 0))) + 
    scale_color_discrete(name = "Probability (95% CI)") + 
    scale_fill_discrete(name = "Probability (95% CI)") + 
    scale_linetype_discrete(name = "Probability (95% CI)") 

)私はそこに起動しなかったと考えています。それは縦にいくつかのすごみを引き起こしていたとして、私はメインラインから線種を除去したことを、

ggplot(plot_band, aes(x = exp_X_post, y = mean, 
         color = outcome)) + 
    geom_ribbon(aes(ymin = p2.5, ymax = p97.5, 
        fill = outcome), 
       alpha = 0.4 
       , linetype = "blank") + 
    geom_line(#aes(linetype = outcome) 
      #, 
       size = 1.5 
      # , show.legend = FALSE 
      ) + 
    xlab("Exposure") + 
    ylab("Proability of CB/DLT") + 
    scale_x_continuous(breaks = pretty(range)) + 
    geom_vline(
    mapping = aes(xintercept = gmcmin 
        , linetype = TRT) 
    , data = observed_mean) + 
    theme_bw() + 
    theme(legend.position = 'right', 
     plot.margin = unit(c(1, 1, 3, 1), "lines"), 
     legend.title = element_text(size = 15), 
     axis.title.y = element_text(margin = margin(0, 15, 0, 0))) + 
    scale_color_discrete(name = "Probability (95% CI)") + 
    scale_fill_discrete(name = "Probability (95% CI)") + 
    scale_linetype_discrete(name = "Treatment") 

注:あなたの代わりに、凡例にあるように、ラベルが必要な場合は

、あなたはこのコードを使用することができますライン。geom_line()の部分のコメントを外して追加することができますが、リストに処理が表示されます。おそらくそれを解決する方法はありますが、もしそれが絶対必要であれば、私のクイック試行は機能しません。しかし、私は、線種は選ぶのが少し難しいことに注意します。 `STR(plot_band)`の出力を含む

Example plot with both the legend and the labels

+0

フィードバックありがとう!それは役に立ちます。私は凡例として右にラベルを置くことを好みます:(1)とあなたが言ったように、平均ラベルが重なります。 (2)データは場合によって変更されます。ラベルの位置を調整するのは現実的ではありません。それは、プロットの右側に凡例として平均ラベルをプロットする方法はありますか? –

+0

Yep - 最新の編集を参照してください。私はまた、 'ggrepel'を使ってプロット上に直接ラベルの配置を自動化するための良い方法を追加しました - 私はそれをもっと早く考えていましたが、私のプロットには(十分な)ラベルをたくさん使ってはいけません。 –

+0

うわー、ありがとう、マーク!私が助けを求めて投稿する前に、私は、幹線と縦線の両方に異なる線種を持たせたいと思ったときに、「奇妙なこと」を観察しました。とにかく、あなたのプロットは私に十分に見えます! '' ggrepel''も知っておきましょう。 –

関連する問題