我正在尝试在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 ...
答案 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.table
或read.csv
来加载数据集。这些函数的默认行为是尝试将每个列转换为数字向量,如果失败,则将其转换为因子。 (有关确切行为,请参阅?type.convert
。)如果您要导入大量带有日期列的数据,则值得学习如何使用colClasses
参数read.table
;这样效率更高,并没有像上面那样的问题。