当前位置:  开发笔记 > 编程语言 > 正文

更改绘图中某些点的颜色

如何解决《更改绘图中某些点的颜色》经验,为你挑选了2个好方法。

如果我有一组数据,并绘制它,例如:

data=rnorm(100,1,2)
x=1:100
plot(x,data,type="l")

如何将某些点更改为不同的颜色?如:

coloured=c(2,3,4,5,43,24,25,56,78,80)

我想要coloured点,红色,如果可能的话,2,3,4和5之间的线为红色,因为它们是连续的.



1> LyzandeR..:

像这样的东西pointslines可能的帮助:

#your data
data=rnorm(100,1,2)
x=1:100
plot(x,data,type="l")
coloured=c(2,3,4,5,43,24,25,56,78,80)

#coloured points
points(coloured, data[coloured], col='red')

#coloured lines
lines(c(2,3,4,5), data[c(2,3,4,5)], col='red')

输出:

在此输入图像描述



2> Cath..:

正如@LyzandeR所提到的,你可以用你的情节绘制红点points.

points(coloured, data[coloured], col="red", pch=19)

如果你想让红线少一些手动,你可以检查连续红点的位置,并将所有位线之间的红色(即点2,3,4,5之间,也可以点24之间)和你的例子中的25):

# get insight into the sequence/numbers of coloured values with rle
# rle on the diff values will tell you were the diff is 1 and how many there are "in a row"
cons_col <- rle(diff(coloured)) 
# get the indices of the consecutive values in cons_col
ind_cons <- which(cons_col$values==1)    
# get the numbers of consecutive values
nb_cons <- cons_col$lengths[cons_col$values==1]
# compute the cumulative lengths for the indices
cum_ind <- c(1, cumsum(cons_col$lengths)+1)

# now draw the lines:
sapply(seq(length(ind_cons)), 
       function(i) {
          ind1 <- cum_ind[ind_cons[i]]
          ind2 <- cum_ind[ind_cons[i]] + nb_cons[i]
          lines(coloured[ind1:ind2], data[coloured[ind1:ind2]], col="red")
       })

在此输入图像描述

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有