也许有人可以帮助从这个图表中获取数据?这可能吗链接到页面:https://investavimorezultatai.allianz.lt/?tipas=gyvenimo-ciklo-pensiju-fondai页面只有母语,希望没有问题。
2hh7jdfx1#
您可以通过从页面中抓取数据来将其放入数据框中。这是中等难度的。它需要在页面上找到链接到生成绘图的html的url,然后将此url的内容以纯文本html的形式下载。在这个html中有一个<script>标签,其中包含一些JavaScript变量。其中一个名为dataProvider,包含作为对象数组的数据序列。您可以使用简单的文本解析将此对象从页面中剪切出来,然后将其传递给jsonlite::fromJSON以将其转换为R dataframe:
<script>
dataProvider
jsonlite::fromJSON
library(tidyverse) library(httr) library(jsonlite) dat <- 'https://investavimorezultatai.allianz.lt/graph_pf_new.php?' %>% paste0('fdate=2018-12-31&ldate=2023-05-04&code=y3&s=1') %>% GET() %>% content('text') %>% strsplit('dataProvider\": ') %>% getElement(1) %>% getElement(2) %>% strsplit('\n') %>% getElement(1) %>% getElement(1) %>% fromJSON() %>% select(date, aValue, bValue) %>% pivot_longer(-date, names_to = 'series') %>% mutate(date = as.Date(date), value = as.numeric(value))
结果数据如下所示:
head(dat) #> # A tibble: 6 x 3 #> date series value #> <date> <chr> <dbl> #> 1 2019-01-02 aValue 100 #> 2 2019-01-02 bValue 100 #> 3 2019-01-03 aValue 99.1 #> 4 2019-01-03 bValue 100 #> 5 2019-01-04 aValue 102. #> 6 2019-01-04 bValue 100
然后,这允许您重新创建图,例如使用
ggplot(dat, aes(date, value, color = series)) + geom_line(linewidth = 0.3) + scale_color_manual(values = c('#023982', '#1ca3d3'), labels = ) + scale_y_continuous(NULL, breaks = 8:17 * 10, limits = c(80, 170), expand = c(0, 0)) + scale_x_date(NULL, breaks = seq(as.Date('2019-01-01'), as.Date('2023-04-01'), '6 months'), minor_breaks = seq(as.Date('2019-01-01'), as.Date('2023-04-01'), '1 months')) + theme_classic(base_size = 14) + theme(axis.line = element_line(linewidth = 0.3, color = 'gray50'), panel.grid.major.x = element_line(), panel.grid.minor.x = element_line(), panel.grid.major.y = element_line(), legend.position = 'none')
1条答案
按热度按时间2hh7jdfx1#
您可以通过从页面中抓取数据来将其放入数据框中。这是中等难度的。它需要在页面上找到链接到生成绘图的html的url,然后将此url的内容以纯文本html的形式下载。
在这个html中有一个
<script>
标签,其中包含一些JavaScript变量。其中一个名为dataProvider
,包含作为对象数组的数据序列。您可以使用简单的文本解析将此对象从页面中剪切出来,然后将其传递给jsonlite::fromJSON
以将其转换为R dataframe:结果数据如下所示:
然后,这允许您重新创建图,例如使用