1

我有一个数据集:

   Country Time      Value
1   USA    1999-Q1   292929
2   USA    1999-Q2   392023
3.  USA    1999-Q3   9392992
4

.... 等等。现在我想绘制这个数据框,时间在 x 轴上,y 是值。但我面临的问题是我不知道如何绘制时间。因为它没有在月/日/年中给出。如果是这样的话,我只会编码as.Date( format = "%m%d%y")。我不允许更改季度名称。所以当我绘制它时,它应该保持这种状态。我怎样才能做到这一点?

先感谢您!

4

3 回答 3

2

假设最后的注释中显示了 DF,将 Time 列转换为yearqtr直接表示年和季度的类(而不是使用Date类)并使用scale_x_yearqtr. 有关?scale_x_yearqtr更多信息,请参阅。

library(ggplot2)
library(zoo)

fmt <- "%Y-Q%q"
DF$Time <- as.yearqtr(DF$Time, format = fmt)
ggplot(DF, aes(Time, Value, col = Country)) + 
  geom_point() + 
  geom_line() +
  scale_x_yearqtr(format = fmt)

(图后续) 截屏

也可以将其转换为每个国家一列的宽格式动物园对象,然后使用autoplot. DF从下面的注释中使用:

fmt <- "%Y-Q%q"
z <- read.zoo(DF, split = "Country", index = "Time", 
  FUN = as.yearqtr, format = fmt)
autoplot(z) + scale_x_yearqtr(format = fmt)

笔记

Lines <- "
Country Time Value 
1 USA 1999-Q1 292929 
2 USA 1999-Q2 392023 
3 USA 1999-Q3 9392992"
DF <- read.table(text = Lines)
于 2020-11-28T14:20:42.377 回答
1

使用 ggplot2:

library(ggplot2)

ggplot(df, aes(Time, Value, fill = Country)) + geom_col()

在此处输入图像描述

于 2020-11-28T14:20:43.360 回答
0

我知道其他人已经回答了,但我认为这个更一般的答案也应该在这里。

当你这样做时as.Date(),你只能做开始。我在您的数据框上尝试了它(我称之为它df),它起作用了:

> as.Date(df$Time, format = "%Y")
[1] "1999-11-28" "1999-11-28" "1999-11-28"

现在,我不知道你是否想使用plot(), ggplot(),ggplot2库......我不知道,没关系。但是,您想指定 y 轴,您可以这样做。

于 2020-11-28T14:26:44.847 回答