防止 ggplot2 自动排序 x 轴
Prevent ggplot2 from automatically ordering x-axis
我有以下示例数据集,它是用户在应用程序中选择创建的子集
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")
但仍然按字母顺序排序 -- 我检查了 here and here 但仍然没有从 2014-Apr 到 2015-Apr
排序
您似乎在尝试使用 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))
这可能是一个选项
# 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")
我有以下示例数据集,它是用户在应用程序中选择创建的子集
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")
但仍然按字母顺序排序 -- 我检查了 here and here 但仍然没有从 2014-Apr 到 2015-Apr
排序您似乎在尝试使用 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))
这可能是一个选项
# 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")