【问题标题】:plot lines instead of points R绘制线而不是点 R
【发布时间】:2012-12-31 20:41:41
【问题描述】:

这可能是一个简单的问题,但我无法找到解决方案。

我有以下情节(我正在使用情节 CI,因为我无法用 plot() 填充点)。

leg<-c("1","2","3","4","5","6","7","8")
Col.rar1<-c(rgb(1,0,0,0.7), rgb(0,0,1,0.7), rgb(0,1,1,0.7),rgb(0.6,0,0.8,0.7),rgb(1,0.8,0,0.7),rgb(0.4,0.5,0.6,0.7),rgb(0.2,0.3,0.2,0.7),rgb(1,0.3,0,0.7))
library(plotrix)
plotCI(test$size,test$Mean, 
pch=c(21), pt.bg=Col.rar1,xlab="",ylab="", ui=test$Mean,li= test$Mean)
legend(4200,400,legend=leg,pch=c(21),pt.bg=Col.rar1, bty="n", cex=1)

我想创建相同的效果,但用线而不是点(连续线)

有什么建议吗?

【问题讨论】:

  • 与情节我会尝试:a
  • 在您的示例中test 是什么?
  • 测试是原始数据表(太大无法重现)
  • @Francisco 然后给出前几行,或者使用随机数创建虚拟数据
  • 谢谢大家,实际上下面的两个答案都给了我解决方案。就我而言,使用 lattice 的解决方案效果很好(组)

标签: r


【解决方案1】:

你有两个解决方案:

  1. 使用 lines() 函数在 (x, y) 位置之间画线。
  2. 使用plottype = "l" 类似的行

如果没有可重现的例子,很难展示它,但你可以这样做:

Col.rar1<-c(rgb(1,0,0,0.7), rgb(0,0,1,0.7), rgb(0,1,1,0.7),rgb(0.6,0,0.8,0.7),rgb(1,0.8,0,0.7),rgb(0.4,0.5,0.6,0.7),rgb(0.2,0.3,0.2,0.7),rgb(1,0.3,0,0.7))

x <-  seq(0, 5000, length.out=10)
y <- matrix(sort(rnorm(10*length(Col.rar1))), ncol=length(Col.rar1))
plot(x, y[,1], ylim=range(y), ann=FALSE, axes=T,type="l", col=Col.rar1[1])

lapply(seq_along(Col.rar1),function(i){
  lines(x, y[,i], col=Col.rar1[i])
  points(x, y[,i])  # this is optional
})

【讨论】:

  • OP提到了实心圆圈;可能值得一提 pch=21 以及 pointscolbg 参数。
  • @drammock 也许..但为什么呢? OP 要求的是线而不是点(所以这里的点是可选的)并且 OP 接受了格子答案。
【解决方案2】:

在生成希望根据某些分组变量连接线的绘图时,您希望摆脱 base-R 绘图并查看 latticeggplot2。 Base-R 图在 xy 图中没有简单的“组”概念。

一个简单的lattice 示例:

library( lattice )
dat <- data.frame( x=rep(1:5, times=4), y=rnorm(20), gp=rep(1:4,each=5) )
xyplot( y ~ x, dat, group=gp, type='b' )

如果您在test 中有一个与您定义的颜色矢量相似的变量,您应该可以使用类似的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多