2017-09-05 68 views
0

我使用R和ggplot2构建数据可视化,它将使用我数据集的特定列(称为MthYr)中的值作为其x轴值。 MthYr列是从另一列导出的,该列是名为Date的日期列。的提取物如下所示:将列的值按特定顺序排序的最有效方法是什么?

Date   MthYr 
2014-06-05  Jun 2014 
2014-07-30  Jul 2014 
...   ... 
2017-08-03  Aug 2017 

数据集来自一个CSV文件和MthYr列是一个文本列。

我需要在ggplot2中创建一个图表,它将在x轴上使用MthYr的值。我希望值进行正确排序,从2014年6月至8月2017年

回答这个问题计算器似乎确实提供了一个解决方案,但它是乏味的顺序明确写下来,从2014年6月至2017年8月: How to sort a character vector according to a specific order?

有没有另一种更有效的方法可以做到这一点?

+2

您将需要确保您的日期列是一个日期对象,用于'scale_x_date'工作。您可以使用'as.Date'和格式参数将对象强制转换为日期。你的ggplot看起来像这样:'ggplot(data,aes(x = MthYr,y = some_variable)+ geom_point()+ scale_x_date(date_breaks =“1 month”,date_labels =“%M”)' –

+0

因为你有月另一种解决方法是在某一天粘贴部分日期,比如'1',例如'as.Date(paste(“1”), ,“2014年6月”),“%d%b%Y”)' –

回答

2

说你的情节是p。使用:

p + scale_x_date(date_breaks = "1 month", date_labels = "%M") 

您可能还想读this documentation。 :)

+0

如果我理解的很好,我只需要使用我的数据集中的日期列并相应地进行格式化 – user3115933

+0

这是正确的。是你的x轴**,你只需将“layer”scale_x_date(...)添加到ggplot对象上告诉ggplot,“好的,所以我的x轴是一个日期向量,现在我添加这个尺度,并指定日期的位置,以及它们如何标记。“ –

相关问题