带图例的条形图R中的列

时间:2018-09-13 15:47:37

标签: r dataframe bar-chart

我正在尝试绘制具有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轴上的列名,the和值为1行的数据作为数据的小图,但是相对于类别行是合起来的。

谢谢。

2 个答案:

答案 0 :(得分:1)

尝试类似这样的方法。注意数据的结构如何与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

答案 1 :(得分:1)

好的,使用您的代码,并重组为整齐的格式:

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