2016-06-08 4 views
2

Вывод функции nestednodf, функции пакета vegan, можно легко построить. Я хотел бы выделить выделенные строки в другом цвете, но я не знаю, как указать его в одном сюжете. Скажем, что я хочу, чтобы строки 1,3 и 5 были синими, а строки 2 и 4 - красным (цвет по умолчанию). Этот код позволяет перекрывать второй участок с рядами 1,3,5 в синем, но не вставляет выбранные строки в первом:Цвет управления в r-графике

library(vegan) 
df=data.frame(a=c(0,1,1,1,0), b=c(1,0,0,0,1), c=c(1,1,1,1,0), d=c(1,0,1,0,1), e=c(0,0,0,1,1)) 
plot(nestednodf(df)) 
plot(nestednodf(df[c(1,3,5),]), col='blue', add=T) 

Есть ли способ контролировать цвет строки? Что-то вроде этого:

plot(nestednodf(df), row.col=c('blue', '', 'blue', '', 'blue')) 
+0

Не могли бы вы уточнить ", но не вставляет выбранные строки в первый"? –

+0

Второй сюжет перекрывает первый, и хотя он отображает мои выбранные строки, он явно не помещает их в желаемый порядок на первом графике, он просто разбивает строки, которые я указывал на первый график. Я хотел бы покрасить разные строки с разными цветами на первом участке –

ответ

3

Вы можете просмотреть исходный код функции, введя vegan:::plot.nestednodf. На самом деле нет возможности использовать два цвета строки. Однако вы можете видеть функция очень проста, так что вы можете написать свой собственный вариант

myplot <- function (x, col = "red", names = FALSE, ...) 
{ 
    z <- x$comm 
    z <- t(z[nrow(z):1, ]) 

    if (length(col) == 1) 
     col <- c(NA, col) 
    else if (length(col)>1) { 
     z <- z*((col(z)-1)%%2+1) 
    } 
    image(z, axes = FALSE, col = col, ...) 
    box() 
    if (length(names) == 1) 
     names <- rep(names, 2) 
    if (names[1]) { 
     axis(2, at = seq(1, 0, len = ncol(z)), labels = rev(colnames(z)), 
      las = 2, ...) 
    } 
    if (names[2]) { 
     axis(3, at = seq(0, 1, len = nrow(z)), labels = rownames(z), 
      las = 2, ...) 
    } 
} 

Здесь я просто добавил линию, чтобы изменить цвета, чтобы быть чередуя заданных значений. Сравнить

plot(nestednodf(df)) 
myplot(nestednodf(df), col=c(NA,'red','blue')) 

enter image description here

Обратите внимание, что я прохожу три цвета, так как первый используется для «0» значений в матрице

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