我想在x轴上生成一个带有重新排序月份的情节(而不是从1月开始到12月结束,我想从4月开始到3月结束)。
我的数据类似于:
Month An Fiscal.Year Month.Number Month.Name
1 2009-04-01 40488474 2009 4 Apr
2 2009-05-01 53071971 2009 5 May
3 2009-06-01 24063572 2009 6 Jun
...
44 2012-11-01 39457771 2012 11 Nov
45 2012-12-01 44045572 2012 12 Dec
46 2013-01-01 90734077 2012 1 Jan
用于制作图表的代码是:
g <- ggplot(data = data, aes(x = Month.Number, y = An)) +
geom_line(aes(group = Fiscal.Year, colour = factor(Fiscal.Year))) +
scale_x_discrete(
name = "Month",
breaks = data$Month.Number,
labels = data$Month.Name
) +
scale_y_continuous();
但结果是从1月到12月按月排序的情节,而不是我想要的4月到3月。 我在scale_x_discrete中尝试过limit选项,但我认为这只是重新排序x轴标签,而不是实际数据。
你能帮我吗?
提前感谢您的回答!
答案 0 :(得分:5)
您必须重新排序Month.Name
的因子级别。假设df
是您的data.frame:
df$Month.Name <- factor( df$Month.Name, levels = c( "Apr", "May", ..., "Feb", "Mar" ) )
g <- ggplot(data = df, aes(x = Month.Name, y = An) ) +
geom_line(aes(group = Fiscal.Year, colour = factor(Fiscal.Year))) +
scale_x_discrete( name = "Month" ) +
scale_y_continuous();
或者你可以改变Month.Number
,使4月为1,5月为2,依此类推......
答案 1 :(得分:2)
在绘图之前运行:
data$Month.Number <- ((data$Month.Number+8) %% 12) + 1