2013-08-07 3 views
0

Я пытаюсь разброс с множеством точек (> 150). Цель состоит в том, чтобы различать точки в определенных областях графика. То, что я в основном ищу, - это способ иметь 2 цветовых масштаба для осей x и y (по 1 для каждого). По сути, я искал что-то вроде этого:Scatterplot с цветовой шкалой X и Y

enter image description here

Каждая уникальная точка должна быть сочетание цветов соответствующих шкал. То, что я пробовал до сих пор, - это график разброса с использованием ggplot. Я попытался установить атрибут цвета, но он назначает свои собственные координаты. Он также не работает с ограничением, которое у меня есть, что я должен создавать отдельные графики графика разброса (короче говоря, увеличенные участки сверху-слева, справа вверху, внизу слева, внизу справа). Если я установил xlim и ylim по своему усмотрению для дополнительных графиков, все, что я получаю, это урожай, который приводит к некоторым вырезам других точек и их текстам по краям сюжета. Я не могу просто создать отдельный сюжет, так как мне нужны точки одного цвета на моем общем сюжете и более конкретные сюжеты (сингулярные цвета).

png("image.png", width = 2000, height = 1500, res = 85); 
ggplotXY <- ggplot(scatterPlotData, aes(x=x, y=y, colour=labels, label=labels)) + 
geom_point() + 
geom_text(hjust=0, vjust=0) 
ggplotXY 
dev.off() 

Текущий общий сюжет:

enter image description here

Текущий участок увеличенной в нижнем левом:

png("image.png", width = 2000, height = 1500, res = 85); 
ggplotXY <- ggplot(scatterPlotData, aes(x=x, y=y, colour=labels, label=labels)) + 
geom_point() + 
geom_text(hjust=0, vjust=0) + 
coord_cartesian(xlim=c(0,100), ylim=c(0, 2.5)) 
ggplotXY 
dev.off() 

enter image description here

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

png("image.png", width = 2000, height = 1500, res = 85); 
ggplotXYColor <- ggplot(scatterPlotData, aes(x=x, y=y, label=labels)) + 
geom_point(colour=scatterPlotData$scatterPointColour) 
ggplotXYColor 
dev.off() 

enter image description here

В случае, если интересно, то scatterPlotData $ scatterPointColour выглядит следующим образом:

[1] "#2276c6" "#224dd0" "#201893" "#22459f" "#21580f" "#219998" "#201893" 
    [8] "#216871" "#22459f" "#201893" "#2276c6" "#22459f" "#22353d" "#201893" 
[15] "#225602" "#21cabe" "#2178d3" "#21eb83" "#21eb83" "#201893" "#201893" 
[22] "#22978b" "#2276c6" "#301054" "#201893" "#301054" "#225e33" "#228f59" 
[29] "#226664" "#220c47" "#21eb83" "#228f59" "#227ef7" "#227ef7" "#226e95" 
[36] "#21c28d" "#22459f" "#228f59" "#223d6e" "#221caa" "#22459f" "#226e95" 
[43] "#225602" "#221caa" "#21d2f0" "#222d0c" "#22459f" "#201893" "#2020c4" 
[50] "#210623" "#21a1c9" "#201893" "#228f59" "#201893" "#201893" "#221caa" 
[57] "#220c47" "#201893" "#22a7ed" "#101893" "#22c080" "#201893" "#2276c6" 
[64] "#201893" "#201893" "#21d2f0" "#222d0c" "#21c28d" "#225602" "#226664" 
[71] "#226e95" "#201893" "#201893" "#21b22b" "#2020c4" "#21cabe" "#21f3b4" 
[78] "#22d0e2" "#201893" "#21c28d" "#21fbe5" "#220c47" "#225602" "#230209" 
[85] "#226664" "#210e55" "#211eb7" "#2170a2" "#201893" "#221caa" "#220c47" 
[92] "#21f3b4" "#21fbe5" "#201893" "#201893" "#201893" "#224dd0" "#247add" 
[99] "#201893" "#23fffc" "#25db1d" "#24188f" "#245a18" "#2449b6" "#24a3d3" 
[106] "#201893" "#2451e7" "#24624a" "#24830e" "#2020c4" "#201893" "#201893" 
[113] "#25b228" "#25eb80" "#23ced5" "#244185" "#24ed8d" "#243123" "#2449b6" 
[120] "#201893" "#273b5e" "#201893" "#264dcd" "#2420c1" "#2578d0" "#264dcd" 
[127] "#251eb3" "#22c8b1" "#22c080" "#22f1a7" "#249370" "#251eb3" "#2428f2" 
[134] "#2428f2" "#249ba1" "#201893" "#2020c4" "#201893" "#244185" "#2472ac" 
[141] "#2449b6" "#247add" "#201893" "#244185" "#243123" "#249370" "#24b435" 
[148] "#2020c4" "#248b3f" "#2020c4" 

Я преобразованный шестигранные цвета в десятичную и затем добавили конкретные десятичные цвета вместе, а затем преобразовали его обратно в шестнадцатеричный. Теоретически, он должен быть красивым от белого до желтого на оси х и от белого до синего на оси у. По мере увеличения точек в x и y цвета должны стать более зелеными. Как вы можете видеть, это не так просто. Я не встречал ни одной библиотеки, которая бы делала 2 цвета осей.

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

Если кто-то может помочь, был бы признателен.

+0

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

+0

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

ответ

1

Здесь у вас есть первый подход с использованием базовой графики для вашей первой проблемы (смешение двух цветовых градиентов).

## use white->yellow for the x-axis and white->blue for the y-axis 
chooseColors <- function(x, y) { 
    x <- 1-x/max(x) 
    y <- 1-y/max(y) 
    return(rgb(green=y, red=y, blue=x)) 
} 


## example values for the whole range 
values <- expand.grid(1:100, 1:100) 

## plot it 
plot(values, col=chooseColors(values[,1], values[,2]), pch=16) 

enter image description here

более реалистичный пример игрушек:

set.seed(1) 
n <- 50 
values <- cbind(sample(1:15, size=n, replace=TRUE), sample(1:15, size=n, replace=TRUE)) 

## plot it 
plot(values, col=chooseColors(values[,1], values[,2]), pch=16) 

enter image description here

+0

Извините, я не очень разбираюсь в RGB. Если бы я хотел, чтобы ось x была от белого до желтого, а ось y была от белого до синего, как бы я это сделал? Спасибо за помощь. – intl

+1

@intl: Я исправил цвета. См. Мое редактирование. – sgibb

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