Я строю круговой график корреляций и хочу получить два типа информации:

  1. Окружность от -1 до 1 по обеим осям
  2. Добавьте в виде стрелок те корреляции, у которых первая и вторая составляющие отличны от 0
  3. Добавьте в виде точек те корреляции, у которых первый или второй компонент равен 0
  4. .

Цвет, используемый для рисования каждой стрелки/точки, интегрирован в data.all all:

  • 1-я колонка: Ось X
  • 2-й столбец: ось Y
  • 3-й столбец: характеристика (цвет)

(UPDATED) Что я кодирую:

## Colors for datasets
fColor <- c("yellow", "blue", "green", "red")
names(fColor) <- c("background", "isolation_p", "media", "solution")
## /

## Filters for 0s
f1 <- all[ , 1] != 0 & all[ , 2] != 0
f2 <- all[ , 1] == 0 | all[ , 2] == 0
## /

## Draw Circle
theta <- c(seq(-pi, pi, length = 50), seq(pi, -pi, length = 50))
circle <- data.frame(xcircle = cos(theta), ycircle = sin(theta))
p <- ggplot2::ggplot(data = circle, ggplot2::aes_string("xcircle", "ycircle")) +
  ggplot2::geom_path(ggplot2::aes_string("xcircle", "ycircle")) +
  ggplot2::geom_hline(yintercept = 0, linetype = "dashed") +
  ggplot2::geom_vline(xintercept = 0, linetype = "dashed")
## /

## Draw arrows
p <- p + ggplot2::geom_segment(data = all[f1, ],
   ggplot2::aes_string(x = 0, y = 0, xend = "x", yend = "y"),
   arrow = grid::arrow(length = grid::unit(0.2, "cm")),
   color = fColor[all$feature[f1]], linetype = "solid")
## /

## Draw points
p <- p + ggplot2::geom_point(data = all[f2, ],
   ggplot2::aes_string("x", "y"),
   color = fColor[all$feature[f2]], shape = 19, size = 2)
## /

## Add axis labels
p <- p + ggplot2::scale_y_continuous("First Component") +
  ggplot2::scale_x_continuous("Second Component")
## /

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

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

+информация

(UPDATE) Фрагмент моего all data.frame:

.
all <- read.table(text = "x y   feature
yc01002711  -0.1755657  0.0000000000    background
yc02001111  0.0000000   -0.0006935916   background
yc03001287  0.0000000   -0.3966829792   background
yc04001667  0.0000000   -0.0575593341   background
xx00000091  -0.4205095  0.0000000000    isolation_p
xx00000092  0.0000000   -0.0085758016   isolation_p
sc78    0.03099176  -0.1425365  media
sc88    0.03897109  0.0000000   media
sc09    -0.05278946 0.0000000   media
inm10058    -0.05277376 0.0000000   solution
inm10099    -0.05286904 0.0000000   solution
inm10101    -0.08174610 -0.1315094  solution")

Пример нарисованного графика:

График двух компонентов

carlesh

Ответов: 1

Ответы (1)

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

Вместо использования aes_string() я делаю подмножество перед построением графика.

f2_s <- all[f2, ]
p <- p + geom_point(data = f2_s, aes(x, y, color=feature), shape = 19, size = 2)
p
p + scale_color_manual(values=c("yellow", "blue", "green", "red"))
p + scale_color_manual(values=c("yellow", "blue", "green", "red")) + scale_y_continuous("First Component") + scale_x_continuous("Second Component")

введите описание изображения здесь

2022 WebDevInsider