2012-10-20 12 views
5

Jestem nowy dla R i udało mi się wykreślić punkty, ale zastanawiam się, czy istnieje sposób na zastosowanie gradientu kolorów na wykresie rozrzutu.W języku R istnieje sposób na kolorowanie punktów wykresu na gradiencie na podstawie zakresu liczb?

Mam macierz 3 kolumn, w której pierwsze dwa będą używane jako współrzędne, a trzecie ma zakres liczb od 0 do .0001. Czy istnieje sposób na kolorowanie punktów fabuły na podstawie tego, gdzie mieszczą się w zakresie liczb?

x y z 
15 3 6e-4 
34 22 1e-10 
24 1 5e-2 
... 

plot(x, y, main= "Title", ylab = "column y", xlab = "column x", col = rgb(0,100,0,50,maxColorValue=255), pch=16) 

Odpowiedz

2

Jak o

plot(x, y, col = gray(z/0.0001)) 

Jest to szary.

3

jestem duży na opakowaniu ggplot2, ponieważ robi wiele, aby zachęcić dobrych nawyków kreślenia (chociaż składnia jest nieco mylące na początku):

require(ggplot2) 
df <- data.frame(x=x, y=y, z=z) #ggplot2 only likes to deal with data frames 
ggplot2(df, aes(x=x, y=y, colour=z) + #create the 'base layer' of the plot 
    geom_point() + #represent the data with points 
    scale_colour_gradient(low="black", high="green") + #you have lots of options for color mapping 
    scale_x_continuous("column x") + #you can use scale_... to modify the scale in lots of other ways 
    scale_y_continuous("column y") + 
    ggtitle("Title") 
0

późno, ale dla dobra innych tego może być tym, czego szukałeś:

mat = cbind(sample(1:30), sample(1:30), 10*rnorm(30,mean=5)) 
n = 255 
data_seq = seq(min(mat[,3]), max(mat[,3]), length=n) 
col_pal = colorRampPalette(c('darkblue','orange'))(n+1) 
cols = col_pal[ cut(mat[,3], data_seq, include.lowest=T) ] 
plot(mat[, 1:2], col = cols, pch=16, cex=2) 
Powiązane problemy