Значения цвета в боксплоте на основе переменной оси x в ggplot - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть фрейм данных, подобный следующему:

df = data.frame(cat = rep(c("A", "B", "C", "D"), each = 20), val = runif(80))

И фрейм данных аннотации, подобный следующему:

ann = data.frame(cat = c("A", "B", "C", "D"), col = c(34, 84, 23, 85))

Я хочу создать блокпост для каждого из этих cats вдоль оси x и значение во фрейме данных в качестве оси y, но я также хочу покрасить каждый блок-график значением в ann$col (непрерывное сопоставление цветов).

Я могу получить коробку, как показано ниже:

ggplot(df, aes(x = variable, y = BACC)) +
  geom_boxplot(width = 0.12)

Но я не уверен, как раскрасить каждую коробку по значению категории.

Как это можно сделать?

Спасибо, Джек

1 Ответ

0 голосов
/ 12 декабря 2018

В ваших данных есть несколько (незначительных) синтаксических ошибок.Тем не менее, вы, вероятно, ищете это:

df <- data.frame(cat = rep(c("A", "B", "C", "D"), 20), val = runif(80))
ann <- data.frame(cat = ("A", "B", "C", "D"), 
                  col = c(34, 84, 23, 85), 20)
library(dplyr) # inner_join comes with dplyr
df_ann <- inner_join(df, ann, by = 'cat') #join both into a three column dataframe 
#(cat, val, col) by mathcing column 'cat'.
ggplot(df_ann, aes(x = cat, y = val, fill = col)) +
geom_boxplot(width = 0.12) + scale_fill_gradientn(colours = rainbow(9))

enter image description here

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