2017-06-19 5 views
1

プロット領域の上部にテキスト(実際のデータのp値)を追加します。ここでは一例であり、私が試したです:coord_cartesianを使用すると、プロット領域の外にテキストを追加するにはどうすればよいですか?

データ:

library(tidyverse) 

set.seed(123) 
plt <- iris 
plt$Petal.Width <- plt$Petal.Width + rnorm(nrow(plt)) 

plt.text <- plt %>% group_by(Species) %>% summarise(label = max(Petal.Width)) 

私はパネルの上にplt.textためsapceを予約しますが、テキストは表示されませんでした:

p <- ggplot(plt, aes(x= Species, y = Petal.Width)) + 
    geom_violin() + 
    geom_text(aes(x = Species, y = 4, label = label), 
       data = plt.text, vjust = 0) + 
    coord_cartesian(ylim = c(-2, 4), expand = 0) + 
    theme(plot.margin = margin(0.2, 0.05, 0.05, 0.05, 'npc')) 

enter image description here

this postに続いて、私が試した:

gt <- ggplot_gtable(ggplot_build(p)) 
gt$layout$clip[gt$layout$name == "panel"] <- "off" 
grid::grid.draw(gt) 

enter image description here

テキストが正しく表示されているが、あなたが見ることができるが、trancatedバイオリンプロットは、上記のプロットでいっぱいに示されています。どのようにしてプロット領域の外にテキストを表示するだけで、バイオリンプロットをトランケートに保つことができますか?私はどうだろう何

+1

cowplot/vignettes/introduction.html)を使用してプロットアノテーションを作成します。 – Axeman

答えて

1

cowplotを使用して:あなたは https://cran.r-project.org/web/packages/([ `cowplot`]使用することができます

p <- ggplot(plt, aes(x= Species, y = Petal.Width)) + 
    geom_violin() + 
    coord_cartesian(ylim = c(-2, 4), expand = 0) + 
    theme_grey() 
ann <- ggplot(plt.text, aes(x = Species, y = 0, label =label)) + 
    geom_text() + 
    theme_void() 


library(cowplot) 
plot_grid(ann, p, ncol = 1, rel_heights = c(.05, 1), align = 'v') 

+0

優れた答え。私は2つのプロットを積み重ねることについて決して考えなかった! – mt1022

関連する問題