首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用ggplot重新排序堆叠条形图中的簇

用ggplot重新排序堆叠条形图中的簇
EN

Stack Overflow用户
提问于 2018-11-30 08:07:19
回答 1查看 459关注 0票数 0

假设我有这些数据集:

代码语言:javascript
运行
复制
test  <- data.frame(person=c("0-4", "5-9", "10-14"), 
                value1=c(100,150,120),  # male   
                value2=c(25,30,45) ,    # female
                value3=c(25,30,45),     # male
                value4=c(100,120,150),  # female
                value5=c(10,12,15),     # male
                value6=c(50,40,70))     # female

使用ggplot2,我创建了一个集群堆叠的条形图。我的R码是:

代码语言:javascript
运行
复制
library(reshape2) # for melt

melted <- melt(test, "person")

melted$cat <- ''
melted[melted$variable == 'value1' | melted$variable == 'value2',]$cat <- "sub group 1"
melted[melted$variable == 'value3' | melted$variable == 'value4',]$cat <- "sub group 2"
melted[melted$variable == 'value5' | melted$variable == 'value6',]$cat <- "sub group 3"
melted$gender <- ''
melted[melted$variable %in% sprintf("value%i",c(1,3,5)),]$gender <- "female"
melted[melted$variable %in% sprintf("value%i",c(2,4,6)),]$gender <- "male"


p = ggplot(melted, aes(x = cat, y = value, fill = gender)) 

p + geom_bar(stat = 'identity', position = 'stack') +   facet_grid(~ person) + 
scale_fill_manual(values = c("orangered","dodgerblue2")) + 
theme(panel.background = element_rect(fill = 'white'))

我有以下图表:

如你所见,这个人组被排列为0-4,10-14,5-9。我要把它安排成0-4,5-9,10-14。我检查了str(),它将变量显示为因素。我的问题是:

  1. 知道如何将person变量重新排序为0-4,5-9,10-14吗?
  2. 我如何命名我的图形标题,x轴,和y轴?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-30 08:18:42

这就是重新排序网格所需的内容:

代码语言:javascript
运行
复制
levels(melted$person) <- c("0-4", "5-9", "10-14") # change the order of the levels 

当您不知道如何更改factor的顺序时,请始终打印levels并查看它们是如何排序的。

使用labs,您可以更改轴和标题:

代码语言:javascript
运行
复制
p = ggplot(melted, aes(x = cat, y = value, fill = gender)) 

p + geom_bar(stat = 'identity', position = 'stack') +   facet_grid(~ person) + 
  scale_fill_manual(values = c("orangered","dodgerblue2")) + 
  theme(panel.background = element_rect(fill = 'white')) + 
  labs(title="abc title", x="aaa",y="bbb") 
  #+theme(plot.title = element_text(hjust = 0.5)) # center title

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53553564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档