2017-05-24 9 views
-1

私はダイナミックな "ポイントトンネリング"、すなわち、ポイントの近傍を描く濃いグレーの領域を持っていたいと思います。 私はスレッドggplot legends - change labels, order and titleの偉大な答えは、スレッドのdttで定義された実験値に基づいていると思います。図中の点の周りに長方形の濃い灰色の領域を作る コード。1R ggplotファセット上でダイナミックポイントトンネリングを行うには?

molten <- structure(list(Vars = structure(c(1L, 2L, 1L, 2L, 1L, 2L), class = "factor", .Label = c("V1", "V2")), variable = structure(c(1L, 1L, 2L, 2L, 3L, 3L), class = "factor", .Label = c("REM", "Kevyt", "Syva")), value = c(160, 150, 380, 420, 110, 180)), .Names = c("Vars", "variable", "value"), row.names = c(NA, -6L), class = c("data.table", "data.frame")) 

library(ggplot2) 

# https://stackoverflow.com/a/12075912/54964 
ggplot(molten, aes(x = Vars, y = value, group = variable, colour = variable, ymin = 100, ymax = 450)) + 
    geom_ribbon(alpha=0.2, colour=NA)+ 
    geom_line() +  
    geom_point() +  
    facet_wrap(~variable) 

図ディスクリート矩形ポイントトンネリングと1つの出力、 図thread

enter image description here enter image description here 2から期待される結果の例

期待される出力:ダイナミックポイントトンネリング、すなわち、図2のような点の周囲の濃い灰色の領域の描画ではなく、各面ごとに個別に広がる

R:3.4.0(バックポート)
OS:Debianの8.7

+0

は、私はあなたが探しているものをここから言うことができません、正しい結果がどのように表示されるかについて、より具体的に説明しなければならないと思います。 – joran

+0

指定されたファセット内のポイントに対して 'range(x)'と 'range(y) 'にまたがる灰色の矩形が必要ですか? – eipi10

答えて

2

あなたは各ファセットのためyrangeのを定義し、プロットにそれを使用することができます。

library(tidyverse) 

ggplot(mtcars %>% group_by(cyl) %>% 
     mutate(miny=min(mpg), 
       maxy=max(mpg)), 
     aes(wt, mpg, group = cyl, 
      colour = factor(cyl), 
      ymin = miny, ymax = maxy)) + 
    geom_ribbon(alpha=0.2, colour=NA)+ 
    geom_line() +  
    geom_point() +  
    facet_wrap(~cyl) + 
    theme_bw() 

enter image description here

ここでは、データフレーム、xおよびy変数、およびファセット/グループ変数を指定できる関数があります。あなたが本当に望んで信頼帯だったら

my_plot = function(data, xx, yy, ff) { 

    yyr = range(data[,yy]) 

    ggplot(data, aes_string(xx, yy, ff)) + 
    geom_ribbon(aes(ymin = yyr[1], ymax = yyr[2]), alpha=0.2, colour=NA)+ 
    geom_line() +  
    geom_point() +  
    facet_grid(paste0("~ ", ff)) + 
    theme_bw() 
} 

my_plot(iris, "Petal.Width", "Sepal.Width", "Species") 

enter image description here

、その後、geom_smooth使用:

ggplot(iris, aes(Petal.Width, Sepal.Width, colour=Species, fill=Species)) + 
    geom_smooth(method="lm") + 
    geom_point(size=1) +  
    facet_grid(. ~ Species) + 
    theme_bw() 

enter image description here

+0

ここでは 'geom_ribbon'が重要な部分です。 – shadowtalker

+0

'data.table'アプローチも素晴らしいでしょう。 –

+0

すべてのパネルで、パネルの全y範囲を四角形で覆いたいのですか? – eipi10

関連する問題