График с легендой столбцы в r

Я пытаюсь построить гистограмму фрейма данных с n столбцами и m строками. В одной из строк находится категория, и я хотел бы, чтобы цвета столбчатой ​​диаграммы основывались на том, к какой категории принадлежит столбец.

Пример :

example = as.data.frame(matrix(1:100, nrow = 1, ncol = 5),
                    dimnames(list(NULL, paste0('ColumnName_', 1:5)))) 
category = as.data.frame(matrix(c('cat.1', 'cat.1', 'cat.2', 'cat.4', 'cat.3'),
                            nrow = 1, ncol = 5), 
                     dimnames(list(NULL, paste0('ColumnName_', 1:5)))) 
example_df = rbind(example, category)
rownames(example_df) <- c('values 1', 'categories')

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

Спасибо.

Я не вижу никаких имен в example_df. Вы имеете в виду названия столбцов? Что будет представлять полоса? Не ясно.

AntoniosK 13.09.2018 18:08

Ваш data.frame содержит только нули. Вам нужны более точные данные для воспроизводимого примера.

hackR 13.09.2018 18:41

Заполнили фрейм данных случайными значениями

eigenfoo 13.09.2018 20:48
1
3
757
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуйте что-нибудь подобное. Обратите внимание, как данные структурированы для правильной работы с ggplot.

library(ggplot)
data <- data.frame(animal = c("Cat", "Dog", "Shark", "Fish"), 
                   home = c("land", "land", "sea", "sea"), 
                   age = c(2,7,9,5))

ggplot(data, aes(x = animal, y = age, fill = home)) + 
    geom_bar(stat = "identity")

enter image description here

Итак, что-то вроде этого, за исключением того, что фрейм данных настроен следующим образом: data <- data.frame (animal = c ("Home", "Cat", "Dog", "Shark", "Fish"), age = c ( "Land", 2,7,9,5)) и все еще хочется, чтобы этот дом стал легендой

eigenfoo 13.09.2018 20:38

Я не совсем понимаю, как вы пытаетесь структурировать свои данные. «Чистые» данные делают работу более гладкой, как здесь объясняется, r4ds.had.co.nz/tidy-data.html. При построении графиков в R с использованием ggplot заливка или цвет должны быть новым столбцом данных.

djchapman 13.09.2018 20:53

Я обновил пример в вопросе для ясности. Спасибо.

eigenfoo 13.09.2018 20:54
Ответ принят как подходящий

Хорошо, используя ваш код и преобразовав его в аккуратный формат:

example = as.data.frame(matrix(1:100, nrow = 1, ncol = 5),
                        dimnames(list(NULL, paste0('ColumnName_', 1:5)))) 
category = as.data.frame(matrix(c('cat.1', 'cat.1', 'cat.2', 'cat.4', 'cat.3'),
                                nrow = 1, ncol = 5), 
                         dimnames(list(NULL, paste0('ColumnName_', 1:5)))) 

example_df = rbind(example, category)
rownames(example_df) <- c('values 1', 'categories')

example_df <- as.data.frame(t(example_df))
example_df["names"] <- rownames(example_df)
ggplot(example_df, aes(x = names, y = `values 1`, fill = categories)) + geom_bar(stat = "identity")

enter image description here

Ты самый лучший игрок! Спасибо!

eigenfoo 13.09.2018 22:07

Другие вопросы по теме