最新版本的ggplot2已经删除了订单审美,之前可以用来指定条形图的堆叠顺序。在此示例中,第一个图表将图例排序为> b>角
df <- data.frame(date = rep(seq(as.Date("2015-11-02"),
as.Date("2015-11-03"), 1), each = 3),
country = rep(c("a", "b", "c"), 2),
value = c(10, 2, 4, 3, 2, 5), stringsAsFactors = FALSE)
ggplot(df, aes(x = date, y = value, fill = country)) +
geom_bar(stat = "identity") +
scale_x_date(labels = date_format("%Y-%m-%d"))
然后我根据最后日期将country
变量重新排序为顺序(即c> a&gt; b)。我现在希望c在堆栈和图例中位于底部。但是,只有颜色和图例可以切换,而不是堆叠顺序。
temp <- subset(df, date == max(df$date))
level_order <- temp[order(temp$value, decreasing = TRUE), "country"]
df$country <- factor(df$country, levels = level_order)
ggplot(df, aes(x = date, y = value, fill = country)) +
geom_bar(stat = "identity") +
scale_x_date(labels = date_format("%Y-%m-%d"))
在ggplot2的早期版本中,可以用aes(order = country)修复此问题。现在order
已经消失了怎么办?
更新
在ggplot2 version 1.10的新闻中宣布了对order
美学的弃用。 aes_group_order的文档引用版本0.9.3.1。
如下面的一个答案所述,堆叠顺序似乎取决于它在数据框中的显示位置。因此,on可以通过在绘图之前对数据帧进行排序来改变堆叠顺序。这似乎是非常奇怪的行为,它会导致条形图之间的堆叠顺序不同。
答案 0 :(得分:0)
你在哪里获得ggplot2的最新版本正在消除订单美感的信息?据我所知,order
美学仍然活着并且在踢。以下代码为我
df <- data.frame(date = rep(seq(as.Date("2015-11-02"),
as.Date("2015-11-03"), 1), each = 3),
country = rep(c("a", "b", "c"), 2),
value = c(10, 2, 4, 3, 2, 5), stringsAsFactors = FALSE)
ggplot(df, aes(x = date, y = value, fill = country, order = country)) +
geom_bar(stat = "identity") +
scale_x_date(labels = date_format("%Y-%m-%d"))
产生情节:
此外,aes_group_order
的文档仍然说这种美学&#34;也可以用来改变散点图的绘图顺序&#34; (http://docs.ggplot2.org/current/aes_group_order.html),运行?order
也不会显示有关弃用的任何标志。我正在运行1.01,这似乎是根据github的最新版本。
答案 1 :(得分:0)
我不知道为什么,但是这个堆栈按照显示的顺序占据了国家。
这项工作:
temp <- subset(df, date == max(df$date))
level_order <- temp[order(temp$value, decreasing = TRUE), "country"]
df <- df[c(3, 1, 2, 6, 4, 5), ]
df$country <- factor(df$country, levels = level_order, labels = level_order )
ggplot(df, aes(x = date, y = value)) +
geom_bar(stat = "identity", aes(fill = country)) +
scale_x_date(labels = date_format("%Y-%m-%d"))