Как добавить цветовой ключ к графику пар ()? - PullRequest
2 голосов
/ 24 марта 2012

Цель: У меня есть скорректированный график pairs в R, и я хотел бы добавить к нему цветовой ключ.Фоны панели на графике pairs показывают определенные цвета, определенные из матрицы чисел.Я хотел бы иметь цветную клавишу справа от графика pairs, которая показывает эти цвета и некоторые метки, обозначающие цифры.

Я нашел несколько способов, как добавить цветовые ключи на image() графиков (например, image.plot в пакете fields; colorbar в пакете matlab; color.legend в plotrix пакет).Итак, в принципе, я хотел бы сделать что-то подобное для моего скорректированного pairs сюжета.Тем не менее, у меня уже возникли проблемы с резервированием некоторого пространства для цветового ключа, на который будет нанесен график (можно [или даже должно ?] Это сделать с помощью grid?).

Вот минимальный пример pairs графика с цветным фоном.Я также попытался адаптировать пример color.legend в plotrix, но это более или менее бессмысленно на данный момент.Есть идеи, как сделать это элегантно / гибко?

count <- 0
color <- c("yellow", "orange", "red", "lightgreen", "darkgreen", "cyan", "lightblue",
           "darkblue", "brown", "gray", "transparent", "transparent")
mypanel <- function(x, y, ...){
   count <<- count+1
   bg <- color[count]
   ll <- par("usr")
   rect(ll[1], ll[3], ll[2], ll[4], col=bg)
   points(x, y, cex=0.5)
}

U <- matrix(runif(4*500), ncol=4)

## require(plotrix)
## par(mar=c(7,4,4,14)) # (bottom, left, top, right)
pairs(U, panel=mypanel, gap=0)
## color.legend(xl=10.2, yb=2, xr=11, yt=5,
##              legend=c("bright","normal","dark"), rect.col=color, align="rb",
##              gradient="y")

Информация: Выбранные выше цвета определяются из чисел (вектор одинаковой длины).Все числа находятся в диапазоне от 0 до 1, и 0 (1) соответствует наиболее темному (самому яркому) цвету.Эти числа должны затем определять тики и цифры, напечатанные на цветовой клавише (мне не нужны фактические текстовые метки - я просто попробовал это, поскольку в примере color.legend его использовали).Таким образом, вектор чисел для colors выше может быть c(0.95, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1, 1, 1) (чем больше число, тем ярче столбец).Чтобы быть более точным: эти значения являются p-значениями, определенными с помощью тестов на пригодность для каждой пары, и темный цвет должен указывать на небольшие p-значения.Действительно, цвета не настолько равномерно распределены, я использую только некоторые цвета выше уровня значимости (например) 0,05, а большинство цветов ниже 0,05, поэтому можно сразу увидеть, какие тесты приводят к отклонению.

...