2012-11-13 33 views
5

içinde farklı renkler ile Histogram benzeri bir tarzda bir vektör data çizmeye çalışıyorum. Bu her zaman kolay, çünkü plot(data, type="h") tam olarak istediğimi yapıyor. Ancak, renkle ilgili bir sorun var. Benim vektör data şöyle görünür:Histogram benzeri arsa R

görmek istediğim ne
data = c(1,2,2,3,1,1,2,3,1,2,2,3, ...) 

, her 1 bir renkte çizilir farklı bir renkte her 2 ve aynı şekilde her 3 olduğunu. Ben

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

ile bunu sağlamak için çalıştı ama ilk çubuk kırmızı böylece, R renk vektörü üzerinde döngü ile dördüncü kırmızı tekrar ve benzeri ikinci mavi, üçüncü yeşil, başarısız oldu. Benim data vektörler hep sayılarla 1, 2 ve 3 ibaret değildir çünkü

Ben çok genel çözümü interessted ediyorum. Vektörün 1'den 6'ya kadar sayıları tuttuğu birçok durum vardır.

Bu problemi nasıl çözeceğini bilen var mı?

cevap

11

Böyle, aynı uzunlukta bir renk vektör oluşturmak gerekir:

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]) 

colors[data] benziyor çünkü bu işler:

print(colors[data]) 
# [1] "red" "blue" "blue" "green" "red" "red" "blue" "green" "red" 
# [10] "blue" "blue" "green" 
+0

Bunu bir dizi veriye nasıl uygularım? Örneğin, -100 ila 100 arasında kırmızı ve diğer her şey maviye düşen her şeye sahip olmak isterim. – user1007742

+0

@ user1007742: Bölmek için 'cut' kullanın: yani mydatacut = cut (x, c (-Inf, -100, 100, Inf))'. Bu, üç seviyeli bir faktör yaratacaktır. Sonra renkleri yapabilirsiniz [as.numeric (mydatacut)] 'Burada, örneğin, c örneğiniz, c (" mavi "," kırmızı "," mavi ") –

6

genel yöntemi için bu deneyin:

data = c(1,2,2,3,1,1,2,3,1,2,2,3,4,5,6,7,12,3) 
colors = rainbow(length(unique(data))) 
plot(data, type="h", col=colors[data]) 
0
colors = rainbow(length(unique(data))); 
hist(data, col=colors[data]) 

Kullanarak mr. lapalme verileri (yukarıda)