我有一个关于按特定顺序绘制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))
这是我目前的情节:
如何对x轴进行排序,使其从1998年,1999年,2000年开始...... 2014年? (而不是在随机年份中绘制它们)
答案 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)])
答案 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')