首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R图将绘制彩色的点,但不会绘制彩色的线

R图将绘制彩色的点,但不会绘制彩色的线
EN

Stack Overflow用户
提问于 2017-08-11 11:16:28
回答 1查看 66关注 0票数 0

我在R中有这样一句话:

代码语言:javascript
运行
复制
plot(net.trips~step, data=subset1, main="Speed = 1.60",type="b", col=subset1$run)

它将用五种不同颜色的点在一张图上生成五种不同的时间序列数据图表(每个图表代表subset1$run的值)。

但是,当我这样做以获得行时:

代码语言:javascript
运行
复制
plot(net.trips~step, data=subset1, main="Speed = 1.60",type="l", col=subset1$run)

我得到了一个图,每个数据序列都是黑色的,而不是五种不同的颜色。

为什么会发生这种情况,我如何纠正它?

以下是我编造的一些示例数据:

代码语言:javascript
运行
复制
RUN   STEP  NUM.TRIPS  
1     1     2   
1     2     4  
1     3     3  
2     1     5  
2     2     2  
2     3     7  

同一曲线图上应该有两个数据系列:

数据系列1:(1,2),(2,4),(3,3)

数据系列2:(1,5),(2,2),(3,7)

如果我使用points (type="b"),那么数据系列1和数据系列2将具有不同的颜色。

如果我使用行(type="l"),数据系列1和数据系列2都将为黑色

EN

回答 1

Stack Overflow用户

发布于 2017-08-11 14:41:36

如果我没弄错的话,你想绘制两个数据序列。但是,您所做的是使用col参数绘制一个数据序列,该参数会影响type='b'时的点。

此外,如果您的示例数据使用的colnames与您在plot命令中使用的不同(net.trips与num.trips),也会造成混淆。

您可以编写一个function,将数据拆分为多个子数据集,并为每个子数据集绘制一条线:

代码语言:javascript
运行
复制
subset1 <- data.frame(
            run = c(1,1,1,2,2,2), 
            step = c(1,2,3,1,2,3), 
            net.trips = c(2,4,3,5,2,7)
           )

plot.subdata <- function(x){
  # create an "empty" plot first
  plot(net.trips~step, data=x, type="n", main="Speed = 1.60")

  # and fill it with dataseries subsetted by run
  for(n in unique(x$run)){
    lines(net.trips~step, data = subset(x, x$run == n), col = n)
  }
}

plot.subdata(subset1)

这不是最优雅的方式,但它会工作的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45626402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档