考虑提供三列的数据框:
我想按照自然顺序按年/月绘制价值。但到目前为止,我还没有找到一个在ggplot中实现这一目标的好方法。下面你会找到一个简化的例子来显示我想要的结果,但是通过应用一个解决方法 - 连接年份和月份或者示例中的a和b。但是这个解决方案带来了一些缺点。
在ggplot中是否有通用的方法来实现这一目标?
> library(ggplot2)
> df <- data.frame(a = c(1,1,1,2,2,2), b = c(1,2,3,1,2,3), v = 1:6)
> df
a b v
1 1 1 1
2 1 2 2
3 1 3 3
4 2 1 4
5 2 2 5
6 2 3 6
> dfX <- data.frame(ab = paste(df$a,df$b), v = df$v)
> dfX
ab v
1 1 1 1
2 1 2 2
3 1 3 3
4 2 1 4
5 2 2 5
6 2 3 6
> ggplot(dfX, aes(x = ab, y = v)) + geom_point()
我如何直接使用df获得上述情节?
答案 0 :(得分:2)
也许使用interaction
:
ggplot(dfX, aes(x = interaction(a,b), y = v)) + geom_point()
答案 1 :(得分:2)
paste
也在这里工作:
ggplot(df, aes(x = paste(a, b), y = v)) + geom_point()
答案 2 :(得分:2)
如果您有年份和月份值,那么我的方法是将它们粘贴在一起,然后转换为Date对象。然后数据将按正确的顺序绘制。如果您只需要x轴上的月份和年份,则可以使用库scale_x_date()
的{{1}}和date_format()
进行修改。
scales