Интенсивность цвета, пропорциональная числу - PullRequest
0 голосов
/ 12 октября 2019

У меня есть следующий фрейм данных

> dataframe
 lx         rx   mc     
  6  58.340712    6
  6 -66.993792    0
 16  -7.163176    1
  4  43.801029    2

С:

>plot(dataframe$lx,dataframe$rx)

Я получаю график точек (6,58.340712), (6,-66.993792), (16,-7.163176) и (4,43.801029). Я хотел бы раскрасить эти точки в соответствии с полем mc. Например, если mc=0, точка черная, в остальном она красная. Кроме того, мне бы хотелось, чтобы интенсивность цвета была пропорциональна значению в поле mc.

1 Ответ

2 голосов
/ 12 октября 2019

Данные

d = structure(list(lx = c(6L, 6L, 16L, 4L),
                   rx = c(58.340712, -66.993792, -7.163176, 43.801029),
                   mc = c(6L, 0L, 1L, 2L)),
              class = "data.frame",
              row.names = c(NA, -4L))

База

#Figure out how many colors you need. If the minimum is 0, we need to add 1
#because indexing in R begins at 1.
n = max(d$mc) + (min(d$mc) == 0)

#Generate n colors based on your preference
cols = colorRampPalette(c("black", "red"))(n)

#Subset colors from 'cols' using values in d$mc
plot(d$lx, d$rx, col = cols[d$mc + (min(d$mc) == 0)], pch = as.character(d$mc), cex = 3)

enter image description here

гглот

library(ggplot2)
ggplot(d, aes(lx, rx, col = mc)) +
    geom_point(size = 3) +
    scale_color_gradient(low = "black", high = "red")

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...