r - r中直方图中的垂直线

标签 r ggplot2

我在 R 中的代码和平中挣扎了一下。我试图在同一个图中创建 6 个不同的直方图。它工作正常,但我需要在 6 个直方图中的每一个中放置 1 条垂直线。我正在使用的代码可能如下所示:

require(ggplot2)
require(reshape2)
require(gdata)

MC_beta=rbind(rnorm(1000,-2,0.1),rnorm(1000,-1,0.1),rnorm(1000,0,0.1),rnorm(1000,0.5,0.1),rnorm(1000,1,0.1),rnorm(1000,2,0.1))


df <- data.frame(MC_beta[1,], MC_beta[2,], MC_beta[3,], MC_beta[4,],MC_beta[5,],MC_beta[6,])
names(df)[1:6]<-c("1", "2", "3", "4","5","6")

df2 = melt(df)

z=c(-2,-1,0,0.5,1,2)

ggplot(df2, aes(x=value, fill = variable)) + geom_vline(xintercept = z, colour="black") +geom_histogram(binwidth=0.03,colour = "black") + scale_fill_manual(name = "",values = c('red','blue',"red","blue","red","blue")) +
  facet_wrap(~variable,nrow=6, ncol=1) + scale_x_continuous(breaks=seq(-2.5,2.5,0.5)) + guides(fill=FALSE) +
  theme_bw() + theme(strip.background = element_blank(),axis.text=element_text(size=14.5),strip.text.x = element_text(size = 14.5)) + stat_function(fun = dnorm)

问题在于语句 geom_vline(xintercept = z, colour = "black") 。显然不是在每个直方图中放置一条垂直线,而是在每个直方图中放置所有 6 条线。所以相反,我希望 z 中的第一个元素在第一个直方图中形成一条垂直线,z 中的第二个元素在第二个直方图中形成一条垂直线,依此类推。

谢谢

最佳答案

对于定义构面的变量的每个值,您的 z 必须是带有相应 data.framexintercept。尝试以下更改:

z <- data.frame(variable=levels(df2$variable), 
                mean=c(-2,-1,0,0.5,1,2))

ggplot(df2, aes(x=value, fill = variable))+ 
  geom_vline(data=z, aes(xintercept = mean), colour="black") +
  geom_histogram(binwidth=0.03,colour = "black") + 
  scale_fill_manual(name = "",values = c('red','blue',"red","blue","red","blue")) +
  facet_wrap(~variable,nrow=6, ncol=1) + 
  scale_x_continuous(breaks=seq(-2.5,2.5,0.5))+ guides(fill=FALSE) +
  theme_bw() + 
  theme(strip.background = element_blank(), axis.text=element_text(size=14.5), strip.text.x = element_text(size = 14.5)) + 
  stat_function(fun = dnorm)

我希望这有帮助。

关于r - r中直方图中的垂直线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23128600/

相关文章:

r - 使用 stat_summary 用观察次数注释绘图

r - 可以使用部分名称访问列表成员吗?这是一个功能吗?

r - 全局环境数据集汇总表

r - dplyr:在group_by中生成行号/行位置

r - 如何在 ggplot2 中添加 abline,x 轴为年份?

r - ggplot 和轴编号和标签

r - geom_violin() - 图形边框以一种奇怪的方式弯曲

r - 如何分解由列表列表组成的数据框

r - 查找并替换为列表中的示例

r - 在 R 中绘制来自不同文件的重叠位置