我已经做了一个堆叠的条形图,但是我想把我的x轴安排在第一个变量的频率上升的方式上。我的数据都是字符串,我有4个不同的字符串(字符串A、字符串B、字符串C和字符串D)。我一直试图得到它,以便我的堆叠条形图是按字符串A的频率排序,但不知道如何。
我一直试图使用factor()和order()和nameorder(),但是它们都会导致很多错误。
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")
发布于 2019-07-30 00:40:14
像这样的东西能起作用
# 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
https://stackoverflow.com/questions/57267506
复制相似问题