找回密码
 立即注册
查看: 4293|回复: 1

R语言 带连接线和星号的柱状图

[复制链接]
发表于 2014-5-23 21:17:54 | 显示全部楼层 |阅读模式

对于未分组的数据,将bargraph.CI绘制的图像对象保持到p,然后可以看到里面保存了坐标
  1. # 构建数据集
  2. set.seed(1984)
  3. category <- gl(3, 3, labels = c("a", "b", "c"))
  4. value <- c(runif(3, min = 0.8, max = 1.2), rnorm(3, mean = 0.2, sd = 0.1), rnorm(3,
  5.     mean = 1.5, sd = 0.1))
  6. data <- data.frame(category, value)

  7. # 绘制柱状图
  8. library(sciplot)
  9. p <- bargraph.CI(category, value, data = data, col = gray(seq(0.1, 0.9, length = 3)),
  10.     ylim = c(0, 2), lc = F, family = "Times", cex.names = 1.25)
  11. box()

  12. # 根据每个图来微调+后参数,然后话连接线
  13. y.cord <- c(p$CI[2, 1, 1] + 0.1, max(p$CI[2, 1, 1:2]) + 0.2, max(p$CI[2, 1,
  14.     1:2]) + 0.2, p$CI[2, 1, 2] + 0.1)  ##坐标意义为纵坐标CI[误差线最大值,分组中柱型,分组]
  15. ## 坐标意义横坐标xvals[分组中柱型,分组]
  16. x.cord <- c(rep(p$xvals[1, 1], each = 2), rep(p$xvals[2, 1], each = 2))
  17. lines(x.cord, y.cord)

  18. # 画星星
  19. x.text <- mean(p$xvals[1:2, 1])
  20. y.text <- max(p$CI[2, 1, 1:2]) + 0.3
  21. text("**", x = x.text, y = y.text)
复制代码
对于分组的数据类似
  1. # 绘制柱状图
  2. library(sciplot)
  3. p <- bargraph.CI(dose,len,group=supp,data=ToothGrowth,xlab="Dose",ylab="Growth",
  4.                  cex.lab=1.5,x.leg=1,col="black",angle=45,cex.names=1.25,
  5.                  density=c(0,20),legend=T,lc=F,ylim=c(0,30),family="Times")
  6. box()

  7. # 根据每个图来微调+后参数,然后画连接线
  8. y.cord <- matrix(nrow=0,ncol=4)
  9. for (i in 1:2) ##1:2决定那些分组需要画线
  10.   y.cord <-rbind(y.cord,c(p$CI[2,1,i]+1,max(p$CI[2,1:2,i])+2,max(p$CI[2,1:2,i])+2,
  11.              p$CI[2,2,i]+1))

  12. x.cord <- matrix(nrow=0,ncol=4)
  13. for (i in 1:2)
  14.   x.cord <- rbind(x.cord,c(rep(p$xvals[1,i],each=2),rep(p$xvals[2,i],each=2)))
  15. for (i in 1:2)
  16.   lines(x.cord[i,],y.cord[i,])

  17. # 画星星
  18. x.text <- colMeans(p$xvals[,1:2])
  19. y.text <- apply(p$CI[2,1:2,],2,max)+3
  20. text("**",x=x.text,y=y.text)
复制代码
引自:
https://github.com/kaji331/R_scripts/blob/master/脚本/带连接线和星号的柱状图/带连接线和星号的柱状图.md



回复

使用道具 举报

发表于 2014-5-24 14:27:24 | 显示全部楼层
很好的code。分享了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|R语言中文网

GMT+8, 2024-11-25 10:34 , Processed in 0.019807 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表