2016-04-21 36 views
1

我有一个笛卡尔坐标数据集。我想做一个基本散点图,每个点根据预先设定的颜色矢量进行着色。用下面的例子很容易实现。与R中的点不同的线条颜色

# A hypothetical dataset 
XCoords<-c(1,3,5,6,8) 
YCoords<-c(3,9,4,3,4) 

# Sorry for picking such ugly colors, its just an example 
Colors<-c("#FDA75F","#F1E19D","#E5AC4D","#FDC07A","#FDB46C") 

# Plot the scatter plot 
plot(x=XCoords,y=YCoords,pch=16,col=Colors) 

然而,如果欲使用类型=“O”或类型=“B”(取决于系统)来绘制的点之间的线,该线的颜色将默认为第一颜色中Colors载体。

# An example using type="o" 
plot(x=XCoords,y=YCoords,pch=16,col=Colors,type="o") 

如果我想让线条变成完全不同的颜色,例如黑色?换句话说,我怎样才能将连接点的线的颜色设置为独立于点的着色方案。

我特别在基地寻找解决这个问题的方法(无ggplot),理想情况是不要求我在两个单独的步骤中绘制线条和点(尽管如果这是唯一的方法,那没关系) 。

回答

2

我认为这样做的正确的方法实际上是做两个步骤:

plot(x=XCoords,y=YCoords,pch=16,col=Colors) 
lines(x = XCoords,y=YCoords,col = "black") 
+1

另外'图(X = XCoords,Y = YCoords,PCH = 16,列=颜色); par(new = TRUE); plot(x = XCoords,y = YCoords,col =“black”,type =“l”)'可能有效。 – Jota

+0

我怀疑这将是答案。虽然我会建议也许分三步进行,然后用plot(...,type =“n”),然后是lines(),然后是points()。这样,这条线就不会出现在点之上。 – Andy

2

lines()功能遗憾的是似乎没有尊重色彩的多元载体为col说法。幸运的是,segments()呢,所以你可以做这样的事情:

## a hypothetical dataset 
x <- c(1,3,5,6,8); 
y <- c(3,9,4,3,4); 

## separate point and line colors 
col.point <- c('red','green','blue','yellow','cyan'); 
col.line <- c('magenta','black','grey','brown'); 

## scatter plot 
plot(x,y,pch=16L,col=col.point); 
##lines(x,y,col=col.line); ## bad, would only use col.line[1L] 
segments(x[-length(x)],y[-length(y)],x[-1L],y[-1L],col=col.line); 

plot

+0

我其实并没有考虑将多元素向量的颜色传递给线条,但这对了解这一点非常有帮助! – Andy

相关问题