Retourner au contenu associé (journal : le dessous des cartes)
Posté par reb001 le 05 septembre 2015 à 21:09. En réponse au journal le dessous des cartes. Évalué à 1.
Gazole
library(XML) library(ggplot2) library(maps) library(scales) library(RColorBrewer) day <- "20150827" baseurl <- "http://donnees.roulez-eco.fr/opendata/jour/" # Récupération des données temp <- tempfile() download.file(paste0(baseurl, day), temp) xmlsource <- unzip(temp, paste0("PrixCarburants_quotidien_", day, ".xml")) unlink(temp) parsed <- xmlParse(xmlsource) gazole <- data.frame( id = xpathSApply(parsed, "//prix[@nom='Gazole']/../@id"), cp = xpathSApply(parsed, "//prix[@nom='Gazole']/../@cp"), latitude = as.numeric(xpathSApply(parsed, "//prix[@nom='Gazole']/../@latitude")) / 100000, longitude = as.numeric(xpathSApply(parsed, "//prix[@nom='Gazole']/../@longitude")) / 100000, prix = as.numeric(xpathSApply(parsed, "//prix[@nom='Gazole']/@valeur")) / 1000, date = as.Date(xpathSApply(parsed, "//prix[@nom='Gazole']/@maj")) ) # Ajout départements. Cas particuliers : Corse et COM gazole$dep <- ifelse(substr(gazole$cp, 1, 2) == "97" | substr(gazole$cp, 1, 2) == "20", substr(gazole$cp, 1, 3), substr(gazole$cp, 1, 2) ) gazole$dep[which(gazole$dep == "200" | gazole$dep == "201")] <- "2A" gazole$dep[which(gazole$dep == "202" | gazole$dep == "206")] <- "2B" gazole$dep <- as.factor(gazole$dep) # suppression Réunion (et mauvaises loc ?) gazole.metro <- subset(gazole, longitude < 10 & latitude > 40) # Moyenne prix et intervalle de confiance mean(gazole.metro$prix) confint(lm(gazole.metro$prix ~ 1)) # GLM : différences entre départements res <- glm(data = gazole, prix~dep) summary(res) # Graphiques boxplot par département et par prix #+ fig.width=15 ggplot(gazole, aes(dep, prix)) + geom_boxplot() + stat_summary(fun.y = mean, geom = "point") + ggtitle(paste("Gazole", day)) + xlab("Département") + ylab("Prix (€)") + theme(axis.text.x=element_text(angle = 90, hjust = 0)) #+ fig.width=15 ggplot(gazole, aes(x=reorder(dep, prix, FUN=mean), prix)) + geom_boxplot() + stat_summary(fun.y = mean, geom = "point") + ggtitle(paste("Gazole", day)) + xlab("Département") + ylab("Prix (€)") + theme(axis.text.x=element_text(angle = 90, hjust = 0)) # Histogramme ggplot(gazole, aes(x = prix)) + geom_histogram() + ggtitle(paste("Gazole", day)) + xlab("") + ylab("") # Carte #+ fig.height=10 france.map <- map_data("france") ggplot(france.map, aes(long,lat)) + geom_polygon(aes(group = group), fill = NA, colour = "grey60") + geom_point(data = gazole.metro, aes(longitude, latitude, color = cut(prix, quantile(prix, seq(0,1,0.2))))) + scale_colour_manual("Prix (€)", values=rev(brewer.pal(5, "RdBu")), guide=guide_legend(reverse = TRUE)) + coord_fixed(ratio = 1.45) + ggtitle(paste("Gazole", day)) + xlab("") + ylab("")
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
[^] # R et ggplot2
Posté par reb001 . En réponse au journal le dessous des cartes. Évalué à 1.
Gazole