Cet article participe au Power BI Advent Calendar 2019 par Prince @ yugoes1021.
J'ai écrit diverses séries liées à la géographie dans Power BI, mais du point de vue de simplement les visualiser sur une carte, il ne reste plus beaucoup de matériel, il a donc tendance à être un article qui pousse le coin d'une boîte lourde. (Cependant, je n'ai pas les ressources ni le temps de toucher à la version Web ou intégrée)
Analyse géographique avec Power BI (basique) Analyse géographique avec Power BI (Application 1) Analyse géographique avec Power BI (Application 2) Carte des États-Unis avec Power BI Calendrier de l'Avent 2017 Analyse géographique avec PowerBI (résumé 2018) Calendrier de l'Avent 2018
J'ai donc décidé de la possibilité qu'il s'agisse d'une carte utilisant R ou Python sur Power BI Desktop. Les extensions en R et Python sont introduites à divers endroits, nous n'utiliserons donc ici que les liens officiels.
Création de visuels Power BI à l'aide de R Exécuter des scripts Python dans Power BI Desktop
En tant que problème, nous utiliserons la visualisation de données ponctuelles que nous avons utilisée comme référence telle quelle. Nous évaluons en utilisant les mêmes données ouvertes Uber qu'avant. Données de sonde de taxi pour San Francisco.
Fondamentalement, à des fins d'affichage simple, nous nous concentrons sur la façon d'appeler R, Python dans Power BI, comment afficher les données de point dans chaque bibliothèque, comment modifier dynamiquement la plage d'affichage, etc. Chaque bibliothèque a une idée très différente, donc ce serait bien si vous pouviez également transmettre cela, mais ce n'est pas possible avec cette taille. .. ..
R
R a plus de variations. Power BI a plus d'histoire que Python. Une petite pierre d'achoppement est la version R et l'emplacement d'installation utilisés par PowerBI. Vous pouvez le définir sur la page d'options ci-dessous, spécifiez donc l'interpréteur R que vous souhaitez utiliser et toujours utiliser. Cela vous évitera d'avoir à installer la bibliothèque.
Cependant, le même interpréteur peut enregistrer l'environnement dans le dossier utilisateur, auquel cas vous devrez l'installer dans un environnement d'interprétation global.
library(maps)
C'est une ancienne bibliothèque. Fondamentalement, diverses cartes blanches sont affichées et des données y sont affichées. (Le ggmap dans le code est utilisé uniquement pour la fonction de commodité pour obtenir la boîte englobante) Vous pouvez superposer des points avec la fonction with.
library(maps)
library(ggmap)
sbbox <- make_bbox(lon = dataset$longitude, lat = dataset$latitude, f = 0)
map('usa', col = "grey", fill = TRUE, bg = "white", border = 0,
xlim = c(sbbox[1], sbbox[3]), ylim = c(sbbox[2], sbbox[4]))
with(dataset, points(longitude, latitude, pch = 1, col = 'blue', cex = .2))
library(sf)
Une bibliothèque pour gérer les données spatiales de manière appropriée. Vous devez le convertir une fois en un bloc de données au format sf. Vous pouvez tracer le bloc de données directement.
library(sf)
library(sp)
dfsf <- dataset %>% st_as_sf(coords = c('longitude', 'latitude'), crs = 4236)
plot(dfsf, col = "blue", pch = 21)
library(tmap)
C'est une bibliothèque qui vous permet de dessiner divers diagrammes de thème relativement facilement. C'est pratique car vous pouvez basculer entre le mode de tracé normal et le mode d'affichage dans lequel le visualiseur de dépliants démarre. Comme pour les autres, PowerBI ne pouvait rien faire comme le lancement d'un navigateur sur l'écran externe du Leaflet. Cependant, comme vous pouvez le voir ci-dessous, le fond de carte ne peut pas être collé en mode tracé. Pardon.
library(tmap)
library(dplyr)
library(sf)
library(sp)
dfsf <- dataset %>% st_as_sf(coords = c('longitude', 'latitude'), crs = 4236)
tmap_mode("plot")
map <- tm_shape(dfsf, name = "uber") +
tm_symbols(shape = 21, col = "blue", size = 0.05) +
tm_basemap("Stamen.Watercolor")
map
library(ggplot2)
La possibilité de dessiner des cartes est intégrée à ggplot. Le processeur de données le plus courant est peut-être celui qui vous convient le mieux.
library(ggplot2)
library(mapproj)
library(ggmap)
sbbox <- make_bbox(lon = dataset$longitude, lat = dataset$latitude, f = 0)
usmap <- map_data("state")
ggplot() +
geom_polygon(data = usmap, aes(x = long, y = lat, group = group), fill = "grey", alpha = 0.5) +
geom_point(data = dataset, aes(x = longitude, y = latitude)) +
theme_void() + coord_map(xlim = c(sbbox[1], sbbox[3]), ylim = c(sbbox[2], sbbox[4]))
library(ggmap)
Si vous voulez une carte de fond plus détaillée, c'est celle-ci. Il est nécessaire d'enregistrer la clé API, probablement parce que les restrictions de l'API Google Maps sont devenues plus strictes. Assurez-vous également d'obtenir la version de développement suivante avec des fonctions d'enregistrement utiles.
Si vous installez la dernière version dans votre environnement R par la méthode suivante, une fonction appelée register_google qui permet le paramétrage de clé sera incluse, donc mettez-la à jour.
devtools::install_github("dkahle/ggmap")
library(ggplot2)
library(mapproj)
library(ggmap)
register_google(key = "YOUR_API_KEY")
sbbox <- make_bbox(lon = dataset$longitude, lat = dataset$latitude, f = 0)
map <- get_stamenmap(bbox = sbbox, zoom = 13, maptype = "toner-lite")
ggmap(map) +
geom_point(aes(x = longitude, y = latitude), color = "blue" ,data = dataset, alpha = .5)
Python
Python dispose d'une bibliothèque de visualisation cartographique à part entière telle que Folium et Shapely, et une bibliothèque de traitement de géodonnées telle que les géo pandas qui est très facile à gérer, mais lorsque je l'ai essayé sur Power BI, cela n'a pas fonctionné facilement. fait. Il y avait aussi une personne qui voulait exécuter Folium, mais comme indiqué ci-dessous, il semble que seul un nombre limité de bibliothèques puisse être exécuté avec le Power BI actuel, j'ai donc décidé d'abandonner docilement. .. ..
Help to implement Python Script - Microsoft Power BI Community
The following Python packages (non-Intel MKL) are currently supported for use in your Power BI reports. Reference: Python packages and versions
- Matplotlib
Python définit également l'interpréteur ci-dessous. Je pense que ce sera Anaconda, mais veuillez noter que même si vous installez une nouvelle bibliothèque, cela ne fonctionnera pas avec Power BI.
Matplotlib
Parmi eux, Matplotlib semble avoir une bibliothèque appelée mpl_toolkits: basemap. Ce n'est pas un standard Matplotlib et doit être installé. Actuellement, l'installation de pip n'est pas prise en charge et conda etc. est utilisé.
conda install -c anaconda basemap
Après l'installation avec, il peut être utilisé dans l'environnement Anaconda.
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
m = Basemap(llcrnrlon=BBox[0],llcrnrlat=BBox[2],urcrnrlon=BBox[1],urcrnrlat=BBox[3])
m.drawcoastlines()
x, y = m(dataset.longitude, dataset.latitude)
m.plot(x, y, 'o')
plt.show()
Résultats avec VSCode:
Cependant, cela ne fonctionnait pas avec PowerBI car ce n'était pas une bibliothèque autre que Matplotlib en premier lieu. orz
Nous utilisons les mêmes données qu'auparavant, alors comparons-les avec la bibliothèque standard. J'ai essayé de réduire le nombre d'enregistrements à l'avance avec l'éditeur de requêtes. Python rend le thé boueux et affiche simplement un graphique en deux dimensions.
Il s'affiche sans aucun problème, y compris la carte standard. C'est juste le nombre affiché.
La carte standard donnera un message indiquant que tous les points ne sont pas affichés. Il semble qu'il n'y ait pas d'omissions majeures comme j'en ai vu d'autres. La vitesse ne change pas beaucoup non plus.
ArcGIS a commencé à jouer. La carte standard semble avoir été échantillonnée au hasard et la gamme d'apparence n'a pas beaucoup changé. Je ne sais pas si d'autres bibliothèques fonctionnent sur PowerBI, et il semble qu'elles puissent toutes être affichées. (vraiment?) Cela ne change pas grand chose sauf que tmap et ggmap sont un peu lents. Vous n'aurez pas à attendre une minute.
À ce stade, il semble que les données soient également réduites pour les visuels R. Aussi, dans les données Uber, il y a une voiture qui va à Las Vegas, donc ggmap prend du temps pour afficher l'ensemble (besoin d'ajuster le taux d'agrandissement de la carte)
Dans une carte aussi simple, il est inutile d'utiliser du code R pour la visualiser, mais si vous avez besoin d'un dessin ou d'un calcul spécial, vous pouvez incorporer une bibliothèque fermement dans R et l'utiliser. , J'ai pensé qu'il pourrait y avoir un virage.
Recommended Posts