2015-01-08 2 views
0

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

Изображение ниже - мои полигоны, а приведенный ниже код - это то, что я использую для создания своего сюжета (если есть лучший способ кодирования этого, пожалуйста, посоветуйте).

enter image description here

plot(alldata[alldata[,3]==forceIds[50],1:2], col="orange", type='l', xlim=range(alldata[,1]),ylim=range(alldata[,2])) 
for(i in 1:length(forceIds)){ 
    polygon(x=alldata[alldata[,3]==forceIds[i],1],y=alldata[alldata[,3]==forceIds[i],2], col=A3$Key2[i]) 
} 

ALLDATA мой набор данные со всеми полигонами, forceIds являются уникальным списком полигонов, A3 представляет собой таблица с моими предустановленными цветами (выходных цветов от более ранней) Тепловой карты.

Я хочу добавить легенду цветовой гаммы к нижней части каждого графика с надписью «Хорошо - Плохо»?

Спасибо.

+0

Вы намерены представить идентичную цветовую гамму для каждого участка? Может быть, лучше просто предоставить его один раз, например. в сторону трех участков. – jbaums

+0

Привет @jbaums, я хочу три отдельных цветовых шкалы по одному для каждого сюжета. Вы можете поделиться тем, как я могу добавить на стороне изменения кода выше, что было бы здорово? –

ответ

1

Возможно, это может помочь вам. Вам нужно будет заменить цветные рампы цветами таблицы A3.

# create a 6 plot layout, with a tall top row and narrow bottom row 
layout(mat=matrix(data = 1:6, nrow = 2, byrow=T), heights=c(3,1)) 

# standard left, bottom, top and right margins 
par(mar=c(5,4,4,2)+0.1) 
for (i in 1:3) { plot(1:3) } 

# reduce the size of the top margin so the plots and colour bars are closer 
par(mar=c(5,4,1,2)+0.1) 

# create a matrix coding the values 1 (Bad) to 10 (Good) 
m = matrix(data = 1:10, ncol = 1) 

# plot 3 colour bars and add custom axis 
for (i in 1:3) { 
    image(x = 1:10, y = 1, z = m, 
      col=colorRampPalette(c('orange', 'red'))(10), 
      axes=F, xlab='', ylab='') 
    axis(3, at=c(1,10), labels = c('Bad', 'Good')) 
} 
+0

Спасибо @koekenbakker Я успешно смог изменить выше, чтобы дать мне то, что я искал. –

+0

Это замечательно. Если вы решите построить только один масштаб, вы можете просто изменить «макет». – koekenbakker

Смежные вопросы