R 为什么我的图形是';s Y轴的顺序不正确?

R 为什么我的图形是';s Y轴的顺序不正确?,r,ggplot2,R,Ggplot2,我正在尝试绘制一个数据帧的图形,如下所示: year week cases 2003 1 0 2003 2 0 2003 3 12 2003 4 23 2003 5 12 2003 6 16 2003 7 20 2003 8 13 2003 9 0 2003 10 0 2003 11 21 2003 12 133 2003 13 9 2003

我正在尝试绘制一个数据帧的图形,如下所示:

year week cases
2003    1     0
2003    2     0
2003    3    12
2003    4    23
2003    5    12
2003    6    16
2003    7    20
2003    8    13
2003    9     0
2003   10     0
2003   11    21
2003   12   133
2003   13     9
2003   14    22
从2003年到2012年连续52周携带数据

下面是运行
dput(head(df,20)
给我的信息:

structure(list(year = c(2003L, 2003L, 2003L, 2003L, 2003L, 2003L, 
2003L, 2003L, 2003L, 2003L, 2003L, 2003L, 2003L, 2003L, 2003L, 
2003L, 2003L, 2003L, 2003L, 2003L), week = 1:20, cases = c(2, 
2, 26, 146, 26, 70, 115, 37, 2, 2, 124, 41, 245, 135, 146, 163, 
26, 26, 92, 92)), .Names = c("year", "week", "cases"), row.names 1925:1944, class = "data.frame")
我希望Y轴只是变量“cases”的范围,X轴从第1周到第52周。我希望用不同的颜色绘制每年的数据点

这是我的ggplot2代码:

ggplot(df, aes(x=week, y=cases, col=year)) + geom_point()
这是它正在生成的图形:


为什么会发生这种情况?我看不出为什么我的Y轴不应该只是按升序排列的“案例”范围。

总结一下评论中所说的:

y轴确实是根据字符值(或者更确切地说是因子级别,因为变量是作为因子导入的)而不是数字值排序的(因此
1,10,11,…,2,20,

有两个问题需要解决:
第一个问题是,您必须理解为什么变量没有作为数字导入。您可能有一个“奇怪”的值(例如
1,2
,即逗号而不是小数点分隔符)

第二个问题是,你需要数值来正确绘制数据。为此,你可以用
df$转换你的因子。事例不是你的事例字符吗?因为我觉得你的轴是按字符顺序排序的……哦,我没想到。我怎么能把它们读成整数而不是字符呢?可能有一个“奇怪”值解释了R不能直接识别为数字的事实,所以搜索它。(例如尝试
as.numeric(df$cases)
并搜索NA值;-)。此外,对于年份而言,使用离散的刻度可能比使用连续的刻度更合适。它似乎不起作用:(.我尝试将这一行添加到我的代码
df$cases中