简体   繁体   中英

Plot a curve with different color for each point in R

I have a curve, for instance

 y_curve=c(1,2,5,6,9,1). 

and the colors for each curve point

colors=c("#0000FF","#606060","#606060","#FF0000","#FF0000","#FF0000").

In theory I want to plot a curve where the first half has one color (except for the first point which is blue) and the second half has another color. In my example the dataset has more than 3000 observations so it makes sense.

For some reason, if I plot the data just using the command plot(y_curve,col=colors), the color of points is plotted corrently.

Nevertheless, if I add the option type="l", the plotted curve has only one color - the blue, which is the first color in the vector colors ("#0000FF"). Does anyone know what am I doing wrong?

So the code is

y_curve=c(1,2,5,6,9,1)

colors=c("#0000FF","#606060","#606060","#FF0000","#FF0000","#FF0000")

plot(y_curve,col=colors,type="l")

Thank you all in advance.
I avoid using ggplot since this part of code is inside an already complicated function and I prefer using the base R commands.

The line option for the plot function does not accept multiple colors.
There is the segments() function that we can use to manually draw in each separate segment individually with a unique color.

y_curve=c(1,2,5,6,9,1)
colors=c("#0000FF","#606060","#606060","#FF0000","#FF0000","#FF0000")
#create a mostly blank plot
plot(y_curve,col=colors)

#index variable
x = seq_along(y_curve)
#draw the segments
segments(head(x,-1), head(y_curve,-1), x[-1], y_curve[-1], type="l", col=colors)

在此处输入图像描述

This answer is based on the solution to this question:
How do I plot a graph in R, with the first values in one colour and the next values in another colour?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM