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")