0

我的绘图中 x 轴的顺序有问题。

从秘鲁中央银行网站下载数据(按季度划分的 GDP)。

library(jsonlite)
library(rstudioapi)
library(ggplot2)
library(data.table)

PBI <- "PN02635BQ"
URL3 <- paste0("https://estadisticas.bcrp.gob.pe/estadisticas/series/api/",
               PBI,"/json/2018-1-1/2021-7-31")

使用json下载数据

l_json <- jsonlite::fromJSON(URL3)
dt_PBI <- data.table(l_json$periods)
sapply(dt_PBI,class)
dt_PBI[,values := round(as.numeric(values),4)]
colnames(dt_PBI)<- c("Quarter", "Millions")

如您所见,该图在 x 轴上没有顺序。

ggplot(dt_PBI, aes(x=Quarter, y=Millions)) +
geom_point()
4

1 回答 1

0

x 轴不按顺序排列,因为您的字符列成为一个因素并按字母数字顺序排序。因此,在您的情况下,“T1.19”将排在“T2.18”之前。要解决此问题,请使用库 forcats 并根据年份对因子进行排序。我把它分成了自己的专栏(“年份”),以明确这里完成了什么。

library(jsonlite)
library(rstudioapi)
library(ggplot2)
library(data.table)
library(forcats)

PBI <- "PN02635BQ"
URL3 <- paste0("https://estadisticas.bcrp.gob.pe/estadisticas/series/api/",
               PBI,"/json/2018-1-1/2021-7-31")


l_json <- jsonlite::fromJSON(URL3)
dt_PBI <- data.table(l_json$periods)
sapply(dt_PBI,class)
dt_PBI[,values := round(as.numeric(values),4)]
colnames(dt_PBI) <- c("Quarter", "Millions")

dt_PBI$year <- substr(dt_PBI$Quarter, 4, 5)
dt_PBI$Quarter <- fct_reorder(dt_PBI$Quarter, dt_PBI$year, min)

ggplot(dt_PBI, aes(x=Quarter, y=Millions)) +
  geom_point()
于 2021-09-10T00:45:12.270 回答