具有多个级别的X轴的ggplot

时间:2013-12-09 17:08:52

标签: r ggplot2

考虑提供三列的数据框:

我想按照自然顺序按年/月绘制价值。但到目前为止,我还没有找到一个在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()

enter image description here

我如何直接使用df获得上述情节?

3 个答案:

答案 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