2017-04-12 22 views
1

プロット内にのみ凡例を表示する方法はありますか?私は解決策hereを試みたが、うまくいきませんでした:ggplot2凡例はプロット内のみ

library(gridExtra) 
library(grid) 
g_legend<-function(a.gplot){ 
    tmp <- ggplot_gtable(ggplot_build(a.gplot)) 
    leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box") 
    legend <- tmp$grobs[[leg]] 
    return(legend)} 

coverage_plot <- ggplot(data=m, aes(x=Time, y=Coverage, group=Technique, color=Technique)) + 
    geom_line(size=1) + 
    scale_colour_discrete(name="Technique") + 
    geom_point(aes(shape=Technique, colour = Technique), show.legend = T, size=3) + 
    scale_x_discrete(labels = seq(1, 30.0, by=1)) + 
    theme(legend.position="right", axis.text.x = element_text(angle = 90),text = element_text(size=14),legend.title=element_blank())+ 
    labs(x = "Time (minutes)")+ 
    scale_shape_discrete() + 
    guides(shape=guide_legend(override.aes=list(size=3, linetype=0))) 

mylegend<-g_legend(coverage_plot) 
p3 <- grid.draw(mylegend) 

ここp3はnullを返します!

私がコメントすることがしたい任意の提案をしてください

答えて

1

... とにかく、私はdiamondsデータセットフォームggplot2とあなたのコードを試してみましたが、それが正常に動作します。あなたはあなたのデータを共有できると思いますか?

library(ggplot2) 
library(gridExtra) 
library(grid) 
g_legend<-function(a.gplot){ 
    tmp <- ggplot_gtable(ggplot_build(a.gplot)) 
    leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box") 
    legend <- tmp$grobs[[leg]] 
    return(legend)} 

coverage_plot <- ggplot(data=diamonds, aes(x=carat, y=price, group=clarity, color=clarity)) + 
    geom_line(size=1) + 
    scale_colour_discrete(name="clarity") + 
    geom_point(aes(colour = clarity), show.legend = T, size=3) + 
    scale_x_discrete(labels = seq(1, 30.0, by=1)) + 
    theme(legend.position="right", axis.text.x = element_text(angle = 90),text = element_text(size=14),legend.title=element_blank())+ 
    labs(x = "Time (minutes)")+ 
    scale_shape_discrete() + 
    guides(shape=guide_legend(override.aes=list(size=3, linetype=0))) 

mylegend<-g_legend(coverage_plot) 
p3 <- grid.draw(mylegend) 

私はここでは6形状シンボルのでそこgeom_pointからshapeを除去し、diamonds 8つの変数を有します。しかしそれ以外は同じです。

関連する問題