有没有一种方法可以给底图R中的线段上色?

有没有一种方法可以给底图R中的线段上色?,r,plot,R,Plot,我现在正在做一些温度/时间的绘图。我根据加热器的开/关状态给数据点着色。在更大的时间尺度上绘制时,点开始融合在一起,点的正弦模式变得模糊。如果我在plot调用中设置type='l',这个模式会更清晰,但这不允许我按加热器状态着色 是否有一种方法可以通过关联的列值为行的部分着色?或者,是否有一种方法可以拆分数据并将线绘制为一系列线段,按加热器状态拆分数据,并根据不同的时间范围进行缩放 下面是一些示例代码 templog = data.frame(temp = c(0,1,2,3,4,4,3,2,1

我现在正在做一些温度/时间的绘图。我根据加热器的开/关状态给数据点着色。在更大的时间尺度上绘制时,点开始融合在一起,点的正弦模式变得模糊。如果我在plot调用中设置type='l',这个模式会更清晰,但这不允许我按加热器状态着色

是否有一种方法可以通过关联的列值为行的部分着色?或者,是否有一种方法可以拆分数据并将线绘制为一系列线段,按加热器状态拆分数据,并根据不同的时间范围进行缩放

下面是一些示例代码

templog = data.frame(temp = c(0,1,2,3,4,4,3,2,1,0,0,1,2,3,4),
                     time = as.POSIXct(c('2019-02-10 00:00:05','2019-02-10 00:00:10','2019-02-10 00:00:15','2019-02-10 00:00:20','2019-02-10 00:00:25','2019-02-10 00:00:30','2019-02-10 00:00:35','2019-02-10 00:00:40','2019-02-10 00:00:45','2019-02-10 00:00:50','2019-02-10 00:00:50','2019-02-10 00:00:55','2019-02-10 00:01:00','2019-02-10 00:01:05','2019-02-10 00:1:10'), tz = 'GMT'),
                     heaterstatus = c('on','on','on','on','on','off','off','off','off','off','on','on','on','on','on'))

plot(templog$temp~templog$time, col = as.factor(templog$heaterstatus))

plot(temp~time, data = templog, col = as.factor(heaterstatus), type = 'l')
在第二个绘图调用中,我希望线条的不同部分采用不同的颜色。如果这是不可能的,我想要一种自动分割数据并通过heaterstatus绘制不同线段的方法,它将随着我向日志中添加新数据而扩展


谢谢

这是可能的,使用函数

fori in 1:lengthtemplog$time-1{ segmentstemplog$时间[i], templog$temp[i], templog$time[i+1], templog$temp[i+1], col=templog$heaterstatus[i] } 基本上,您正在遍历每一对点&以指定的颜色绘制一条直线。此外,还可以简化绘图调用-

plottemp~time,data=templog,type='n' 就够了

希望这有助于:-