ggplot2 +使用比例X的日期结构

Siy*_*iya 5 r ggplot2

我真的需要帮助,因为我迷失了.

我正在尝试创建一个折线图,显示一年内几支球队的表现.我把这一年分为四季:2012年1月1日,2012年4月1日.12年8月1日.12/1/12并将csv数据帧加载到R.

     Month               Team Position
1   1/1/12       South Africa       56
2   1/1/12             Angola       85
3   1/1/12            Morocco       61
4   1/1/12 Cape Verde Islands       58
5   4/1/12       South Africa       71
6   4/1/12             Angola       78
7   4/1/12            Morocco       62
8   4/1/12 Cape Verde Islands       76
9   8/1/12       South Africa       67
10  8/1/12             Angola       85
11  8/1/12            Morocco       68
12  8/1/12 Cape Verde Islands       78
13 12/1/12       South Africa       87
14 12/1/12             Angola       84
15 12/1/12            Morocco       72
16 12/1/12 Cape Verde Islands       69
Run Code Online (Sandbox Code Playgroud)

当我尝试使用ggplot2生成图表时,第12季度的第12季度莫名其妙地移动到第二点.

ggplot(groupA, aes(x=Month, y=Position, colour=Team, group=Team)) + geom_line()
Run Code Online (Sandbox Code Playgroud)

然后我将此绘图放入变量GA中,以尝试使用scale_x格式化日期:

GA + scale_x_date(labels = date_format("%m/%d"))
Run Code Online (Sandbox Code Playgroud)

但我一直得到这个错误:

Error in structure(list(call = match.call(), aesthetics = aesthetics,  : 
Run Code Online (Sandbox Code Playgroud)

找不到函数"date_format"

如果我运行此代码:

GA + scale_x_date()
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Error: Invalid input: date_trans works with objects of class Date only
Run Code Online (Sandbox Code Playgroud)

我正在使用运行R 2.15.2的Mac OS X.

请帮忙.

Aru*_*run 6

因为,df$Month(假设你的data.framedf),这是一个factor按此顺序排列的水平.

> levels(df$Month)
# [1] "1/1/12"  "12/1/12" "4/1/12"  "8/1/12" 
Run Code Online (Sandbox Code Playgroud)

解决方案是重新排序因子的级别.

df$Month <- factor(df$Month, levels=df$Month[!duplicated(df$Month)])
> levels(df$Month)
# [1] "1/1/12"  "4/1/12"  "8/1/12"  "12/1/12"
Run Code Online (Sandbox Code Playgroud)

ggplot2_factor_levels

编辑:使用替代解决方案strptime

# You could convert Month first:
 df$Month <- strptime(df$Month, '%m/%d/%y')
Run Code Online (Sandbox Code Playgroud)

然后你的代码应该工作.查看下图:

ggplot2_strptime_solution