примените к ggplot2, наложите гистограмму на цветные точки geom_point и названия в соответствии с переменной lapply - PullRequest
0 голосов
/ 16 мая 2018

На мой вопрос есть две части:

i.Я хочу наложить geom_histogram на geom_point для различных aes переменных

Мои данные:

    df_test <- data.frame(structure(list(A= c(-0.80146, 0.190611, 0.028847, 
0.026058, -0.021505, 0.540703, 0.052167, 0.203469, 0.069915, 
0.148333, 0.005477, -0.001109, -0.116027, 0.473616, 0.120469, 
0.11245, 0.100045, 1.781763, -0.177578, 0.134783, -0.099096, 
-0.077076, 0.193608, 0.407867, -0.039539, 0.13453, 1.173945, 
-0.797383, -0.277112, -0.164893, -0.265595, 0.003697, 0.998122, 
-0.080394, 0.085291, -0.805778, -0.071481, -0.344804, -0.353637, 
-0.198817, 0.77241, 0.169778, 0.063251, 0.024213), B= c(0L, 
0L, 0L, 0L, -1L, 2L, 0L, 0L, -1L, 0L, 0L, 0L, 0L, 2L, -1L, 0L, 
0L, 2L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, -1L, 
2L, 0L, 0L, -1L, 0L, 0L, 0L, 0L, 2L, -1L, 0L, 0L), C= c("GM1", 
"GM2", "GM3", "GM4", "GM5", "GM6", "GM7", "GM8", "GM9", "GM1", 
"GM2", "GM3", "GM4", "GM5", "GM6", "GM7", "GM8", "GM9", "GM1", 
"GM2", "GM3", "GM4", "GM5", "GM6", "GM7", "GM8", "GM9", "GM1", 
"GM2", "GM3", "GM4", "GM5", "GM6", "GM7", "GM8", "GM9", "GM1", 
"GM2", "GM3", "GM4", "GM5", "GM6", "GM7", "GM8")), .Names = c("A", 
"B", "C"), class = "data.frame", row.names = c(NA, 
44L)))

Мой код выглядит следующим образом:

library(ggplot2)
regions = c('GM1', 'GM2', 'GM3', 'GM4', 'GM5', 'GM6', 'GM7', 'GM8', 'GM9')
hist_plot <- function(df){
  p = ggplot(df, aes(x=A)) + geom_histogram(fill='white', color='black')
  p = p + geom_point(aes(A,B)) + ggtitle(names(regions))
  p
}

p = lapply(df_test, hist_plot)

Ожидаемый выходной график примерно такой (игнорируйте красные стрелки вверху):

enter image description here

Я не могу:

я.раскрасьте точку geom_point и добавьте для нее легенду в соответствии с переменной B

ii.Назовите каждый участок в соответствии с регионом, из которого он получен.

Может кто-нибудь посоветовать?Я попытался добавить цвет специально для geom_point, но получил ошибку.Спасибо!

1 Ответ

0 голосов
/ 16 мая 2018

Если я правильно понял вопрос, вам не нужна функция и lapply.Ни вектор regions.Все, что вам нужно, это facet_wrap, как показано ниже.
Более того, lapply(df, FUN) будет применяться FUN к каждому столбцу из df.Это потому, что кадры данных являются списками в табличном формате.

Теперь код.

p <- ggplot(df_test, aes(x = A)) + 
     geom_histogram(fill = 'white', color = 'black') +
     geom_point(aes(A, B, color = B)) + ggtitle(names(C)) + 
     facet_wrap( ~ C)
p

enter image description here

...