R 我如何在ggplot2中按时间顺序排列月份,而不是写出月份?

R 我如何在ggplot2中按时间顺序排列月份,而不是写出月份?,r,ggplot2,R,Ggplot2,我正试着画一个月的计数 ggplot(dat, aes(x=month, y=count,group=region)) + geom_line(data=mcount[mcount$region == "West coast", ],colour="black",stat="identity", position="dodge")+ geom_point(data=mcount[mcount$region == "West coast", ],colour="black", s

我正试着画一个月的计数

ggplot(dat, aes(x=month, y=count,group=region)) +
    geom_line(data=mcount[mcount$region == "West coast", ],colour="black",stat="identity", position="dodge")+
     geom_point(data=mcount[mcount$region == "West coast", ],colour="black", size=2, shape=21, fill="white")+
     theme_bw()+
     theme(legend.key = element_rect(colour = "black")) +
     guides(fill = guide_legend(override.aes = list(colour = NULL)))+
     ggsave("test.png",width=6, height=4,dpi=300)

但是我想按时间顺序从1月到12月。我怎么能不把所有的月份都写出来呢

dput


使用内置的
month.name
month.abb
变量以正确的顺序指定因子的级别。在这种情况下,您有缩写,因此
month.abb
是合适的

your_data$month = factor(your_data$month, levels = month.abb)
我认为以正确的顺序创建因子是最好的方法,但您也可以使用离散比例的
限制
参数对轴进行排序(有关更多信息,请参见
?离散比例

地区 如果您使用的是非英语语言环境,则可以使用少量日期格式(基本上是从Brian Ripley那里偷来的)构造自己的月份名称常量:


如果您想使用不同地区的月份名称/缩写,那么
with r
软件包非常有用。

您是在问如何将当前图表按时间顺序组织起来,还是将标签按时间顺序排列?另一方面,您是否坚持使用ggplot2?你看过使用带日期的动态图吗?您只需将月份列转换为日期类型。@InfiniteFlashChess从未使用过ggplot2以外的任何东西。很高兴学习有用的图书馆。请随意添加。谢谢。这似乎是改变你整个方法的一个小问题。它有一个非常简单的修正,我还要指出,如果你需要一个时间序列对象来使用动态图,那么“这个确切的问题”是不变的。您需要知道如何按非字母顺序排列character/factor变量,以获得具有正确顺序的时间序列对象。动态图看起来很棒,我是交互式图形的忠实粉丝-我只是觉得它们与这个问题完全无关。我不知道这些变量,尼斯+1。知道这个很好,我以前完全看不见。谢谢需要注意的是:
month.abb
似乎只识别英文的月份名称。如果他们能匹配现场那就太好了。。。
your_data$month = factor(your_data$month, levels = month.abb)
+ scale_x_discrete(limits = month.abb)
 month.name.loc = format(ISOdate(2004, 1:12, 1), "%B")
 month.abb.loc  = format(ISOdate(2004, 1:12, 1), "%b")