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中