ggplot2重命名x轴刻度会改变图表外观。

3
我有一个不错的图表(下面是图表#1),但是我想把x轴刻度标签改为“Group 1”,“Group 2”,等等,而不是“1”,“2”等。我试过通过指定新标签(图表#2)或将x.df中的分组变量从数字更改为字符字符串/因子(图表#3和#4)来实现这一点。然而,标签要么消失了(图表#2),要么图表变得奇怪(图表#3和#4)。有什么建议吗?
library(ggplot2)

grp<-c(1,1,1,1,1,1,2,2,2,3,3,3,3,3,3,4,4,4,4,4)
rate<-c(6,7,8,9,6,7,8,9,6,7,8,9,6,7,8,9,6,7,8,9)

x.df<-data.frame(cbind(grp,rate))
x.df$rate<-as.factor(x.df$rate)

table(x.df$grp,x.df$rate)

# Plot #1 : Correct
ggplot(data = x.df, aes(x = grp, y = ..prop.., fill = rate))+ 
  geom_bar(stat = 'count', position = 'dodge')+ 
  xlab('Group')+ 
  ylab('%')

# Plot #2 : Correct but NO x-axis tick labels
ggplot(data = x.df, aes(x = grp, y = ..prop.., fill = rate))+ 
  geom_bar(stat = 'count', position = 'dodge')+ 
  xlab('Group')+ 
  ylab('%')+
  scale_x_discrete(breaks=1:4,
               labels=c("Group 1","Group 2","Group 3","Group 4"))

x.df$grp<-paste("Group",as.character(x.df$grp))

# Plot #3 : Incorrect graph but correct x-axis tick labels OK
ggplot(data = x.df, aes(x = grp, y = ..prop.., fill = rate))+ 
  geom_bar(stat = 'count', position = 'dodge')+ 
  xlab('Group')+ 
  ylab('%')

x.df$grp<-as.factor(x.df$grp)

#Plot #4 : as Plot #3
ggplot(data = x.df, aes(x = grp, y = ..prop.., fill = rate))+ 
  geom_bar(stat = 'count', position = 'dodge')+ 
  xlab('Group')+ 
  ylab('%')

1
尝试使用scale_x_continuous而不是离散变量的第二次尝试#2 - Jack Brookes
1个回答

1
在图表2中,最简单的方法是使用limits参数而不是breaks/labels
ggplot(data = x.df, aes(x = grp, y = ..prop.., fill = rate))+ 
  geom_bar(stat = 'count', position = 'dodge')+ 
  xlab('Group')+ 
  ylab('%')+
  scale_x_discrete(limits=c("Group 1","Group 2","Group 3","Group 4"))

对于 scale_x_discretebreaks 可以是 NULL、waiver()、字符向量或函数 - 使用数字向量会导致问题。 - Anindya Mozumdar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接