almost 6 years ago
最近刚刚接触到R,在学习过程中发现一个问题。我有一组数据大概是这样:
Year Percentage
1950 20%
1955 21%
1960 22%
...
在我画图时报错:
> ggplot(china, aes(x = year, y = n)) +
geom_line()
geom_path: Each group consist of only one observation. Do you need to adjust the group aesthetic?
通过检查变量类型,发现年份数据是Factor类型而不是Numeric类型:
$ year : Factor w/ 21 levels "1950","1955",..: 1 2 3 4 5 6 7 8 9 10 ...
后来在Stackoverflow上发现了解决方案:
as.numeric(as.character(year))
year这个变量被做了两次转换,第一次是把它从Factor类型转换成Character类型,然后再从Character类型转换成Numeric类型。为什么不能将year直接转换成Numeric类型呢?我尝试了直接转换:
> as.numeric(china$year)
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
原本1950, 1955, 1960 ... 被转换成了1, 2, 3... 这样的问题在于,当你绘图时,X轴上原本应该显示年份,但却被1, 2, 3所代替:
所以为了避免出现这种情况,需要对数据进行两次转换。
刚刚发现了另外一种方法:
ggplot(china, aes(x = year, y = n)) +
geom_line(aes(group=1))
但需要注意的是,如果要加入X轴坐标的话,需要使用:
scale_x_discrete #不能使用scale_x_continuous,因为年份数据不是连续性的