R:ggplot::geom_path:每组仅包含一个观察值。需要调整群体审美吗?

标签 r

我正在尝试在 ggplot 中制作折线图,但我很难诊断我的错误。我已经通读了几乎所有类似的线程,但一直无法解决我的问题。

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

我的 str 看起来像:

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 ...

我的绘图代码:

ggplot(jpycpi, aes(x=jpycpi$DATE, y=jpycpi$JPNCPIALLMINMEI)) + geom_line()

它给我一个错误提示:

geom_path: Each group consists of only one observation. Do you need to adjust the group aesthetic?

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

ggplot(jpycpi, aes(x=jpycpi$DATE, y=jpycpi$JPNCPIALLMINMEI, group=1)) + geom_line()

最佳答案

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

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

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

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

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

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

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

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

关于R:ggplot::geom_path:每组仅包含一个观察值。需要调整群体审美吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38427163/

相关文章:

r - muhaz 包危险函数的置信区间

java - r - 使用 Java 9 在 macOS High Sierra 上安装 rJava

r - Rstudio中的表示-使图像填充整个屏幕

r - 如果包含,则提取直到下一个 "_"

r - 使用 ggplot2 左对齐 geom_text 图层

r - 在 R 中绘制棋盘

r - 按类 : numeric before character 排列数据框列

r 系统函数 cd 进入带空格的文件夹名称

r - 通过类似于 rbind 的引用将 data.table 附加到另一个 data.table

r - fread 和带有尾部反斜杠的列