ggplot以特定顺序绘制x轴

时间:2014-11-20 13:23:54

标签: r ggplot2

我有一个关于按特定顺序绘制x轴的问题。

这是我正在绘制的样本数据:

  year                             names count
1 1998               allmylife - kcijojo    83
2 1997      doowopthatthing - laurynhill   196
3 1998      gettinjiggywitit - willsmith   231
4 2000 idontwanttomissathing - aerosmith    82
5 1998              imyourangel - rkelly   121
6 2013               myall - mariahcarey    70

这是我的代码:

library(ggplot2)
setwd("C:/Users/Andrew/Desktop/music lyrics")
data = read.csv("summary.csv", header=FALSE, stringsAsFactors = FALSE)
names(data) = c('year', 'names', 'count')

ggplot(data, aes(names,count,  fill=year))+
geom_bar(stat='identity')+ 
theme(axis.text.x = element_text(angle = 90, hjust = 1))

这是我目前的情节: enter image description here

如何对x轴进行排序,使其从1998年,1999年,2000年开始...... 2014年? (而不是在随机年份中绘制它们)

2 个答案:

答案 0 :(得分:2)

使用sort:

在ggplot函数中执行此操作
library(ggplot2)
a$year <- factor(a$year)
ggplot(a, aes(names, count,  fill=year)) +
  geom_bar(stat='identity') + 
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  scale_x_discrete(limits=a$names[order(a$year)])  

enter image description here

答案 1 :(得分:1)

这将按年度排序,然后按名称按字母顺序排列。

d <- read.csv(text="year,names,count
1998,               allmylife - kcijojo,    83
1997,      doowopthatthing - laurynhill,   196
1998,      gettinjiggywitit - willsmith,   231
2000, idontwanttomissathing - aerosmith,    82
1998,              imyourangel - rkelly,   121
2013,               myall - mariahcarey,    70")

d <- with(d, d[order(year, names), ])

d <- within(d, {
    names <- reorder(names, seq_along(names), order=TRUE)
    year <- as.factor(year)
})

ggplot(d, aes(names, count,  fill=year))+
  geom_bar(stat='identity')+ 
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +labs(fill='year') 

enter image description here