我们如何通过 Darksky API 提取 2000 年的伦敦天气?

How can we extract London weather in 2000 via Darksky API?

#install.packages("darksky")
library(darksky)
library(tidyverse)

# current verison
packageVersion("darksky")

Sys.setenv("DARKSKY_API_KEY" = # Secret API Key
             )
Sys.getenv("DARKSKY_API_KEY")

#This coordinates works 
now <- get_current_forecast(43.2672, -70.8617)
print(now)

正在尝试提取伦敦的温度信息...

seq(as.Date("2000-01-01"), as.Date("2001-01-01"), "day") %>% 
  map(~get_forecast_for(51.5074, 0.1278, .x)) %>% 
  map_df("daily") %>% 
  ggplot(aes(x=time, y=temperature)) +
  geom_line()´

但是出现访问被禁止的 HTTP 403 错误

HTTP 403 错误表明您无法访问被调用的网站。所以这意味着你的密钥是错误的。首先,您需要在 darksky. Please be aware: you just get 1000 api calls per day for free (check the faq) 上创建一个帐户,如果您想全年拨打电话,您已经接到了 365 个 api 电话,因为您每天打一个电话。所以先尝试较小的日期。

您可以使用 darksky_api_key() 输入 API 密钥,这样您就有机会在控制台中输入您的密钥。否则你可以创建一个 .Renviron 文件并在那里添加密钥(为此检查 darksky 包的 documentary)。

所以在控制台中添加密钥后,这里是来自 github 的代码工作示例(我猜你也使用过)。根据你的情况调整日期和情节,因为通话限制,我只用了一个月的数据。

library(darksky)
library(tidyverse)
library(ggplot2)

# current verison


darksky_api_key()

#This coordinates works 
now <- get_current_forecast(43.2672, -70.8617)
print(now)

df <- seq(as.Date("2000-01-01"), as.Date("2000-02-02"), "day") %>% 
  map(~get_forecast_for(51.5074, 0.1278, .x)) 

df %>%
  map_df("hourly") %>%
  ggplot(aes(x=time, y=temperature)) +
  geom_line()

输出: