2013-02-25 162 views
23

凡例のシンボルのサイズを変更するにはどうすればよいですか?私はthemeの文書をチェックしましたが、答えが見つかりませんでした。ここでggplot2:凡例のシンボルサイズを調整する

は一例です:

library(ggplot2);library(grid) 
set.seed(1000) 
x <- 1:6 
mu <- sin(x) 
observed <- mu + rnorm(length(x), 0, 0.5*sd(mu)) 
data <- data.frame(
    t=rep(x, 2), 
    value=c(mu, observed) - min(mu, observed) + 0.5, 
    class = rep(c("mu", "observed"), each=length(x))) 
mu <- data$value[1:length(x)] 
observed <- data$value[1:length(x) + length(x)] 
mu.min <- mu - 3 * 0.5 * sd(mu) 
mu.max <- mu + 3 * 0.5 * sd(mu) 
g <- ggplot(data=data) 
g <- g + geom_point(aes(x=value, y=t, shape=class, size=24)) + scale_size(guide="none") 
g <- g + scale_shape(name="", labels=expression(paste(S[u](t), ", the observation at time ", t), paste(mu[u](t), ", the mean of ", tilde(S)[u](t), "   "))) 
stat_function.color <- gray(0.5) 
g <- g + geom_segment(aes(y=1:6, yend=1:6, x=mu.min, xend=mu.max, linetype="2", alpha = 1), color=stat_function.color) + scale_alpha(guide="none") + scale_linetype(name= "", labels=expression(paste("probability density function (pdf) of ", tilde(S)[u], " at time ", t))) 
for(i in 1:length(x)) { 
    g <- g + stat_function(fun=function(x, i) { 
    ifelse(x <= mu.max[i] & x >= mu.min[i], dnorm(x, mu[i], sd(mu)) + i, NA) 
    }, color=stat_function.color, args=list(i=i)) 
} 
background.color <- gray(0.75) 
g <- g + theme(
    axis.text=element_blank(), 
    title=element_text(size=rel(1.5)), 
    legend.text=element_text(size=rel(1.5)), 
    legend.position="top", 
    legend.direction="vertical", 
# legend.key.size = unit(2, "cm"), 
    panel.background=element_rect(fill=background.color), 
    panel.grid.major=element_line(color=background.color), 
    panel.grid.minor=element_line(color=background.color) 
) + coord_flip() 
plot(g) 
+1

はhttp://stackoverflow.com/questions/16356052/control-ggplot2-legend-look-without-affectingを見ます-the-plot – PatrickT

答えて

37

あなたはguide_legend()override.aes引数を使用して手動で変更のこれらの種類を作ることができます。

あなたが使用する必要があります
g <- g + guides(shape = guide_legend(override.aes = list(size = 5))) 
print(g) 
17

theme(legend.key.size = unit(3,"line")) 
+3

IMHOは、質問で言及された「テーマ」を使用しているので、より適切な答えです。 –

+1

このコードは、シンボル自体ではなく、シンボルの周りの領域を増加させます。ガイドコードはより適切です。 – LindsayLucas

4

マリウスさんRバージョン3.2.2の回答は私にとってはうまくいきませんでした。引き続き同じoverride.eas引数を使用してguide_legend()を呼び出すことはできますが、ラッパー機能ではshapeの代わりにcolorを指定する必要があります。あなたがRの以降のバージョンを実行している場合

ので、代わりにこれを試してみてください。

g + guides(color = guide_legend(override.aes = list(size=5))) 
関連する問題