Как установить имена столбцов в качестве заголовков гистограмм в ggplot2 - PullRequest
2 голосов
/ 20 июня 2020

Я хотел бы нарисовать несколько гистограмм из набора данных радужной оболочки, используя ggplot2. Единственное, чего не хватает, - это элегантный способ установить имена столбцов из этого набора данных в качестве заголовков для каждого графика в labs (title = ). Ранее я пытался использовать colnames и paste разными способами, однако это не возвращало желаемого результата. Кто-нибудь из вас знает, как сделать этот последний шаг, чтобы каждая гистограмма показывала соответствующее имя столбца в качестве заголовка?

Вот мое изображение:

library (ggplot2)

# Reorder iris columns for convenience
df <- iris[,c(5, 1:4)]
 
# Histograms - z represents the columns of the df containing data for histograms
 histograms <- apply (df[,2:ncol(df)], 2, function (z){
     ggplot(df, aes(x = z)) +
       geom_histogram(aes(y = ..density..)) + 
       stat_function(fun = dnorm, args = list(mean = mean(z, na.rm =TRUE), sd = sd(z, na.rm = TRUE)), colour = "blue") +
       facet_wrap(~ Species) +
       labs (title = "Histogram for column z", x = "values")
  })

histograms

1 Ответ

1 голос
/ 20 июня 2020

Попробуйте это. Вместо перебора столбцов перебирайте имена:

library (ggplot2)

# Reorder iris columns for convenience
df <- iris[,c(5, 1:4)]

# Histograms - z represents the columns of the df containing data for histograms
histograms <- lapply (names(df[,2:ncol(df)]), function (z){
  mean <- mean(df[[z]], na.rm =TRUE)
  sd <- sd(df[[z]], na.rm =TRUE)
  ggplot(df, aes(x = !!sym(z))) +
    geom_histogram(aes(y = ..density..)) + 
    #stat_function(fun = dnorm, args = list(mean = mean(z, na.rm =TRUE), sd = sd(z, na.rm = TRUE)), colour = "blue") +
    stat_function(fun = dnorm, args = list(mean = mean, sd = sd), colour = "blue") +
    facet_wrap(~ Species) +
    labs (title = paste0("Histogram for column ", z), x = "values")
})

histograms[[1]]
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Created on 2020-06-20 by the пакет репекс (v0.3.0)

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