2014-10-07 4 views
0

Я хочу сделать линейный график с несколькими строками, при этом каждая строка соответствует определенному цвету. Затем я хочу показать цветную панель в сторону сюжета. Прямо определять и строить линии (как простой пример ниже), но я не мог поместить планку (я пробовал разные подходы). Примечание. Я не хочу использовать ggplot2.добавление цветной полосы в простой строке с определенными цветами радуги в R

n =30 
color=rainbow(n, s = 1, v = 1, start = 0, end = max(1, n - 1)/n, alpha = 1) 
x=seq(1:10) 
plot(x,1*x,col=color[1],type="l") 
for (i in seq(2,30)){ 
    lines(x,i*x,col=color[i])} 

ответ

2

Это прекрасный пример того, почему ggplot так популярно ... AFAIK, рисование легенды Colorbar в графике базового R требует создание макета с двумя колонками, и положив image(...) во втором слоте, как и в :

n =30 
color=rainbow(n, s = 1, v = 1, start = 0, end = max(1, n - 1)/n, alpha = 1) 
layout(t(1:2),widths=c(6,1)) 
x=0:10 
par(mar=c(4,4,1,0.5)) 
plot(x,1*x,col=color[1],type="l") 
for (i in seq(2,30)){ 
    lines(x,i*x,col=color[i])} 
par(mar=c(5,1,5,2.5)) 
image(y=2:30,z=t(2:30), col=color[2:30], axes=FALSE, main="Slope", cex.main=.8) 
axis(4,cex.axis=0.8,mgp=c(0,.5,0)) 

Для получения информации о всех этих непонятных параметрах участка (mar, mgp, cex.main и т.д., т.д.), тип ?par. Кроме того, есть несколько пакетов, которые пытаются сделать это проще: here и here

И даже если вы не спросили об этом, решение ggplot.

library(ggplot2) 
n <- 30 
df <- expand.grid(x=0:10,slope=2:n) 
df$y <- with(df,x*slope) 
ggplot(df) + geom_line(aes(x,y,group=slope,color=slope))+ 
    coord_cartesian(ylim=c(0,10))+ 
    scale_color_gradientn(colours=rainbow(n))+ 
    theme_bw()