我有以下示例数据集,它是用户在应用程序中选择的子集
cons_mergedAll <- structure(list(count = c(487L, 463L, 560L, 578L, 563L, 557L,
65L, 48L, 324L, 447L, 166L, 108L, 351L, 301L, 389L, 384L, 333L,
345L, 417L, 384L, 316L, 336L, 381L, 379L, 230L, 252L), type = c("open",
"closed", "open", "closed", "open", "closed", "open", "closed",
"open", "closed", "open", "closed", "open", "closed", "open",
"closed", "open", "closed", "open", "closed", "open", "closed",
"open", "closed", "open", "closed"), month = c(1, 1, 2, 2, 3,
3, 4, 4, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11,
12, 12), month_yr = c("2015 01", "2015 01", "2015 02", "2015 02",
"2015 03", "2015 03", "2014 04", "2014 04", "2015 04", "2015 04",
"2014 05", "2014 05", "2014 06", "2014 06", "2014 07", "2014 07",
"2014 08", "2014 08", "2014 09", "2014 09", "2014 10", "2014 10",
"2014 11", "2014 11", "2014 12", "2014 12"), month_yr2 = c("2015 Jan",
"2015 Jan", "2015 Feb", "2015 Feb", "2015 Mar", "2015 Mar", "2014 Apr",
"2014 Apr", "2015 Apr", "2015 Apr", "2014 May", "2014 May", "2014 Jun",
"2014 Jun", "2014 Jul", "2014 Jul", "2014 Aug", "2014 Aug", "2014 Sep",
"2014 Sep", "2014 Oct", "2014 Oct", "2014 Nov", "2014 Nov", "2014 Dec",
"2014 Dec")), .Names = c("count", "type", "month", "month_yr",
"month_yr2"), row.names = c(1L, 40L, 4L, 43L, 7L, 46L, 10L, 49L,
13L, 52L, 15L, 54L, 18L, 57L, 21L, 60L, 24L, 63L, 27L, 66L, 30L,
69L, 33L, 72L, 36L, 75L), class = "data.frame")
我正在尝试使用ggplot2
执行条形图并阻止x-bar
上的自动排序,但使用数据集上的顺序
我该怎么做呢
以下是我正在使用的示例代码
cons_mergedAll <- cons_mergedAll[order(cons_mergedAll$month, cons_mergedAll$yr_report),]
cons_mergedAll$month_yr2 <- factor(cons_mergedAll$month_yr2, ordered = T)
ggplot(cons_mergedAll , aes( x=month_yr2 ,y=count, fill=type )) + geom_bar( stat="identity",position="dodge") +
ylab("Number of Tickets") + xlab("Month")
答案 0 :(得分:3)
这可能是一个选项
# Add a column with order, as per your requirement
cons_mergedAll$order = c(1:length(cons_mergedAll$count))
# use the added column to reorder() your data in ggplot
ggplot(cons_mergedAll , aes(reorder(month_yr2, order) ,count, fill=type )) +
geom_bar( stat="identity",position="dodge") +
ylab("Number of Tickets") +
xlab("Month")
答案 1 :(得分:2)
您似乎正在尝试使用ordered=TRUE
将订单保留在原始文件中。这不是它的作用。而是使用levels=...
并按照您想要的顺序为其提供级别。
cons_mergedAll <- cons_mergedAll[order(cons_mergedAll$month_yr),]
cons_mergedAll$month_yr2 <- factor(cons_mergedAll$month_yr2,
levels=unique(cons_mergedAll$month_yr2))