Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

histogram-like plot with different colors in R

Tags:

plot

r

I am trying to plot a vector data in a histogram-like style. This is always kind of easy, because plot(data, type="h") does exactly what I want. However, there is a problem with the color. My vector data looks like this:

 data = c(1,2,2,3,1,1,2,3,1,2,2,3, ... )

What I want to see, is that each 1 is plotted in one color, each 2 in a different color and each 3 likewise. I tried to achieve that with

 plot(data, type="h", col=c("red","blue","green")

but it failed with R looping over the color vector, so that the first bar was red, the second blue, the third green, the fourth red again and so on.

I am very interessted in general solution, because my data vectors do not always consist of the numbers 1, 2 and 3. There are many cases in which the vector holds the numbers from 1 to 6.

Does anybody know how to solve this problem?

like image 298
MaxPowers Avatar asked Nov 13 '12 16:11

MaxPowers


1 Answers

You would need to create a vector of colors of the same length, like this:

data = c(1,2,2,3,1,1,2,3,1,2,2,3)
colors = c("red","blue","green")
plot(data, type="h", col=colors[data])

This works because colors[data] looks like:

print(colors[data])
#  [1] "red"   "blue"  "blue"  "green" "red"   "red"   "blue"  "green" "red"  
# [10] "blue"  "blue"  "green"
like image 67
David Robinson Avatar answered Nov 04 '22 14:11

David Robinson