Xml GG用OECD.stat生成的折线图绘制图表中不需要的垂直线

Xml GG用OECD.stat生成的折线图绘制图表中不需要的垂直线,xml,r,ggplot2,time-series,linechart,Xml,R,Ggplot2,Time Series,Linechart,我正试着从数据库中获取数据。我修改了帖子中的代码,以获取我想要可视化的数据: require(XML2R) file <- "http://stats.oecd.org/restsdmx/sdmx.ashx/GetData/HEALTH_STAT/EVIE+EVIEFE00+EVIEFE40+EVIEFE60+EVIEFE65+EVIEFE80+EVIEHO00+EVIEHO40+EVIEHO60+EVIEHO65+EVIEHO80+EVIETOTA.EVIDUREV+EVIFHOEV+E

我正试着从数据库中获取数据。我修改了帖子中的代码,以获取我想要可视化的数据:

require(XML2R)
file <- "http://stats.oecd.org/restsdmx/sdmx.ashx/GetData/HEALTH_STAT/EVIE+EVIEFE00+EVIEFE40+EVIEFE60+EVIEFE65+EVIEFE80+EVIEHO00+EVIEHO40+EVIEHO60+EVIEHO65+EVIEHO80+EVIETOTA.EVIDUREV+EVIFHOEV+EVIHFEEV.POL+GBR+USA/all?startTime=1960&endTime=2013"
obs <- XML2Obs(file)
tables <- collapse_obs(obs)
keys <- tables[["MessageGroup//DataSet//Series//SeriesKey//Value"]]
dates <- tables[["MessageGroup//DataSet//Series//Obs//Time"]]
values <- tables[["MessageGroup//DataSet//Series//Obs//ObsValue"]]
country_list <- keys[keys[,1]== "COU" | keys[,1]== "COUNTRY"]
country_list <- country_list[(length(country_list)*1/3+1):(length(country_list)*2/3)]
dat <- cbind.data.frame(as.numeric(dates[,1]),as.numeric(values[,1]))
colnames(dat) <- c('date', 'value')
dat$country <- c(country_list[1], country_list[cumsum(diff(dat$date) <= 0) + 1])
dat$value2 <- signif(dat$value,2)
head(dat)
dat <- dat[complete.cases(dat),]
library(ggplot2)
ggplot(dat) +
    geom_line(aes(x = date,y = value, colour = country)) +
    theme(axis.title = element_text(colour = 'black', face = 'bold', size = 12,
                                    family = 'sans'),
          axis.text = element_text(colour = 'black', size = 12),
          plot.title = element_text(size = 17, face = "bold", colour = "black"),
          panel.background = element_rect(fill = NA),
          panel.grid.major = element_line(colour = 'gray', linetype = 'dotted'),
          strip.background = element_rect(fill = NA, colour = NA),
          strip.text = element_text(colour = 'black', face = 'plain', size = 13),
          plot.background = element_rect(fill = NA, colour = 'black', size = 0.25))
require(XML2R)

文件您可以发布一个
dat
的示例吗?看起来您有17到21行国家和日期组合的数据值。因此,ggplot在每个国家/年组合中画出了一条介于17到21点之间的线。由于这些点的值范围在-3到80之间,因此通过这些点的垂直线每年从-3到80延伸。可能是您的下载脚本正在下载一系列不同的测量值,这些测量值应该在单独的列中,但最终都在单个列(值)中?例如,EVIE、EVIEFE00、EVIEFE40、EVIEFE60等是单独的统计数据(预期寿命或其他一些健康统计数据),并且都应该是单独的数据列,相反,它们都被堆叠在一个名为
的列中。谢谢你的评论,你是对的。我在变量中选择了多个单位,正确的URL是
http://stats.oecd.org/restsdmx/sdmx.ashx/GetData/HEALTH_STAT/EVIEHO00.EVIHFEEV.POL+GBR+USA/all?开始时间=1960,结束时间=2013