我制作了一个堆积的条形图,但是我希望以我的第一个变量的频率递增的方式来排列我的x轴。我的数据都是字符串形式的,并且我有4个不同的字符串(字符串A,字符串B,字符串C和字符串D)。我一直在尝试获取它,以便按字符串A的频率对堆积的条形图进行排序,但不知道如何。
我一直在尝试使用factor()和order()以及name [order()],但它们都会引起很多错误。
data$variable <- factor(data$variable, levels = data$variable[order(data$val)])
ggplot(data = data, aes(x = variable, y = countofdata, fill = factor(value)))
+ geom_bar(
stat = "identity")
答案 0 :(得分:0)
类似的事情可以解决问题
# generate data
data <- data.frame(variable= factor(c("a", "a", "a", "c", "d", "d")))
# see the order of the levels
data$variable
# [1] a a a c d d
# Levels: a c d
# change factor levels ascending
data$variable <- factor(data$variable, levels = names(sort(table(data$variable))))
# output
data$variable
# [1] a a a c d d
# Levels: c d a
# -> correct order
由于您未提供任何数据,因此我无法测试此方法是否适合您。请下次再这样做(请参见here)。
编辑
根据评论进行编辑
categories <- c("category 3", "category 3", "category 3", "category 2", "category 2", "category 2", "category 1", "category 1", "category 1")
values <- c("A", "B", "C", "A", "A", "A", "A", "A", "C")
data <- cbind.data.frame(categories, values)
tabl <- aggregate(values ~ categories, data, table)
data$categories <- factor(data$categories, levels = as.character(tabl$categories[order(tabl[ , "values"][ , "A"], decreasing= FALSE)]))
data$categories
# Levels: category 3 category 1 category 2