R:ggplot :: geom_path:每组只包含一个观察。你需要调整群体美感吗?

时间:2016-07-18 00:24:19

标签: r

我正在尝试在ggplot中制作折线图,但我在诊断错误时遇到了困难。我已经阅读了几乎所有相似的主题,但一直无法解决我的问题。

我试图绘制日本的CPI。我从FRED在线下载了数据。

我的str看起来像:

#include <iostream>
#include <map>
#include <memory>

int main() {
  std::map< int, std::unique_ptr<int> > m =
    { { 1, std::unique_ptr<int>(new int(3)) } };

  return(0);
}

我的剧情代码:

/usr/include/c++/4.9/ext/new_allocator.h:120:4: error: use of deleted function ‘constexpr std::pair<_T1, _T2>::pair(const std::pair<_T1, _T2>&) [with _T1 = const int; _T2 = std::unique_ptr<int>]’
  { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }

它给我一个错误说:

  

geom_path:每组只包含一个观察。你需要调整群体审美吗?

我已经尝试了以下内容并且能够绘制它,但是由于某些奇怪的原因,图形x条被扭曲了。该代码如下:

str(jpycpi)

data.frame: 179 obs. of  2 variables:
 $ DATE           : Factor w/ 179 levels "2000-04-01","2000-05-01",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ JPNCPIALLMINMEI: num  103 103 103 102 103 ...

1 个答案:

答案 0 :(得分:6)

“每个组只包含一个观察结果”会出现错误消息,因为您的 x 美学是一个因素。 ggplot认为这意味着你的自变量是分类的,与geom_line一起没有意义。

在这种情况下,修复它的正确方法是将数据的该列转换为Date向量。 ggplot了解如何将所有R的日期/时间类用作 x 美学。

从一个因子转换为一个日期有点棘手。直接转换,

jpycpi$DATE <- as.Date(jpycpi$DATE)

适用于R版本3.3.1,但是,如果我没记错的话,会在旧版本的解释器中给出无意义的结果,因为as.Date只会查看序列因子水平,而不是他们的标签。相反,应该写

jpycpi$DATE <- as.Date(as.character(jpycpi$DATE))

从因子转换为字符向量查看标签,因此后续转换为Date对象将执行正确的事情。

您可能首先得到$ DATE的因素,因为您使用read.tableread.csv来加载数据集。这些函数的默认行为是尝试将每个列转换为数字向量,如果失败,则将其转换为因子。 (有关确切行为,请参阅?type.convert。)如果您要导入大量带有日期列的数据,则值得学习如何使用colClasses参数read.table;这样效率更高,并没有像上面那样的问题。