另一个ggplot传奇问题!
我有一个表格的数据集
test <- data.frame(
cond = factor(rep(c("A", "B"), each=200)),
value = c(rnorm(200), rnorm(200, mean=0.8))
)
Run Code Online (Sandbox Code Playgroud)
所以两组和一些值我想绘制密度.我还想在剧情中添加一行表示每组的平均值,所以我:
test.cdf <- ddply(test, .(cond), summarise, value.mean=mean(value))
Run Code Online (Sandbox Code Playgroud)
然后在ggplot调用:
ggplot(test, aes(value, fill=cond)) +
geom_density(alpha=0.5) +
labs(x='Energy', y='Density', fill='Group') +
opts(
panel.background=theme_blank(),
panel.grid.major=theme_blank(),
panel.grid.minor=theme_blank(),
panel.border=theme_blank(),
axis.line=theme_segment()
) +
geom_vline(data=test.cdf, aes(xintercept=value.mean, colour=cond),
linetype='dashed', size=1)
Run Code Online (Sandbox Code Playgroud)
如果运行上面的代码,则会得到一个表示每个组的图例,但也会显示一个表示平均指示符vline的图例.我的问题是如何摆脱传说geom_vline()
?
Pau*_*tra 17
根据您使用的ggplot2版本,您会遇到此问题.在R2.14.1上使用ggplot2 vs 0.9.0我得到了这个图:
其中不包括vline的图例.在这个版本的ggplot2中,您可以使用show_guide
以下方法调整图例的出现:
ggplot(test, aes(value, fill=cond)) +
geom_density(alpha=0.5) +
labs(x='Energy', y='Density', fill='Group') +
opts(
panel.background=theme_blank(),
panel.grid.major=theme_blank(),
panel.grid.minor=theme_blank(),
panel.border=theme_blank(),
axis.line=theme_segment()
) +
geom_vline(data=test.cdf, aes(xintercept=value.mean, colour=cond),
linetype='dashed', size=1, show_guide = TRUE)
Run Code Online (Sandbox Code Playgroud)
这再现了你的问题.默认,show_guide = FALSE
.在旧版本中,您可以添加legend = FALSE
到geom_vline
以省略传奇.添加legend = FALSE
静止工作仍然适用于当前版本,但它会抛出警告:
Warning message:
In get(x, envir = this, inherits = inh)(this, ...) :
"legend" argument in geom_XXX and stat_XXX is deprecated. Use show_guide = TRUE or show_guide = FALSE for display or suppress the guide display.
Run Code Online (Sandbox Code Playgroud)
我建议升级ggplot2
.