Exploration du code R dans SAP Analytics Cloud

Objective

After completing this lesson, you will be able to utilisez le code R.

Exemples de visualisations R et du code R

En sélectionnant Insérer et Visualisation R, vous pouvez créer une grande variété de graphiques à l'aide d'un script de R.

Dans cette leçon, vous découvrirez neuf exemples de visualisations R créées dans SAP Analytics Cloud et le code R associé à partir de l'éditeur de script.

Vous pouvez copier le code et l'utiliser dans le système de pratique pratique SAP pour expérimenter les différentes visualisations R utilisées dans ce chapitre.

Graphique linéaire

Dans cet exemple, vous pouvez voir qu'un graphique linéaire a été créé pour afficher le chiffre d'affaires au fil du temps par région.

Exemple de graphique linéaire dans une présentation SAP Analytics Cloud. Le code R utilisé pour le créer suit l'exemple.

L'exemple ci-dessus a été créé à l'aide du code R suivant dans l'éditeur de script de visualisation R :

Code Snippet
1234567891011
library(ggplot2) BestRunCorpRetail$`Sales Revenue` <- BestRunCorpRetail$`Sales Revenue` / 1000 # Line Graph for Sales Over Time ggplot(BestRunCorpRetail, aes(x = Date, y = `Sales Revenue` , group=Region, color=Region )) + geom_line() + labs(title = "Sales Revenue (in k) by Region Over Time", x = "Date", y = "Sales Revenue") + theme(legend.position="bottom") theme_minimal()

Diagramme à barres horizontales empilées

Dans cet exemple, vous pouvez voir qu'un diagramme à barres horizontales empilées a été créé pour afficher la quantité vendue par région et par lignes.

Exemple de graphique à barres horizontales empilées dans une présentation SAP Analytics Cloud. Le code R utilisé pour le créer suit l'exemple.

Certaines visualisations R peuvent être créées sous forme de graphiques interactifs. Cet exemple est un graphique avec lequel les utilisateurs peuvent interagir pour isoler et cibler des données spécifiques, comme vous pouvez le voir dans l'image suivante.

Certains graphiques sont interactifs. À gauche, vous pouvez voir que les données africaines sont isolées. À droite, les données européennes sont exclues.

L'exemple ci-dessus a été créé à l'aide du code R suivant dans l'éditeur de script de visualisation R :

Code Snippet
1234567
library(ggplot2) library(plotly) # Bar Chart for Sales by Product Category p1 <- ggplot(BestRunCorpRetail, aes(x = Lines, y = `Quantity sold`/1000 , fill = Region )) + geom_bar(stat = "identity") + coord_flip() ggplotly(p1, tooltip = c("x", "y", "fill"))

Diagramme à bulles à nuage de points

Dans cet exemple, vous pouvez voir qu'un diagramme à bulles de dispersion interactif a été créé pour afficher une comparaison du produit des ventes par quantité vendue pour chaque directeur commercial.

Exemple de graphique à bulles de dispersion interactif dans une présentation SAP Analytics Cloud. Le code R utilisé pour le créer suit l'exemple.

Il s'agit d'un autre exemple de graphique interactif. Les utilisateurs peuvent exécuter l'interaction, ainsi que passer la souris sur les éléments de celle-ci pour afficher des informations supplémentaires, comme vous pouvez le voir dans l'image suivante.

Exemple de graphique interactif. L'image en haut à gauche a le bouton Lecture en surbrillance. L'image en bas à droite comporte une info-bulle qui fournit des informations supplémentaires.

L'exemple ci-dessus a été créé à l'aide du code R suivant dans l'éditeur de script de visualisation R :

Code Snippet
12345678910111213141516
# import packages ggplot2 and plotly library(ggplot2) library(plotly, warn.conflicts = FALSE) # create a ggplot frame through function ggplot() and add data points, labels and scale settings BestRunCorpRetail$`Sales Revenue` <- BestRunCorpRetail$`Sales Revenue` / 1000 BestRunCorpRetail$`Quantity sold` <- BestRunCorpRetail$`Quantity sold` / 1000 gg <- ggplot(BestRunCorpRetail, aes(`Quantity sold`, `Sales Revenue`, color = Manager)) + geom_point(aes(size = Discount , frame = Year, ids = Manager)) + labs(title = "Comparison Sales Revenue (in k) and Quantity Sold (in k) versus Discount" , y = "Sales Revenue", x = "Quantity Sold") + scale_x_log10() # convert the ggplot frame to a plotly frame through function ggplotly() ggplotly(gg)

Diagramme de densité

Dans cet exemple, vous pouvez voir qu'un diagramme de densité a été créé pour afficher la densité des lignes de produits dans chaque région.

Exemple de graphique de densité dans une présentation SAP Analytics Cloud. Le code R utilisé pour le créer suit l'exemple.

L'exemple ci-dessus a été créé à l'aide du code R suivant dans l'éditeur de script de visualisation R :

Code Snippet
123456
# import packages ggplot2 and plotly library(ggplot2) library(plotly, warn.conflicts = FALSE) ggplot(BestRunCorpRetail, aes( Region , Lines )) + labs(title = "Density of the Product Lines in the Different Region" ) + geom_jitter(aes(color = Lines ), size = 1) + theme(legend.position="none")

Nuage de mots

Dans cet exemple, vous pouvez voir qu'un nuage de mots a été créé pour montrer la relation entre les villes et la marge brute associée.

Exemple de nuage de mots dans une présentation SAP Analytics Cloud. Dans les nuances de bleu, les noms des villes sont dimensionnés par rapport à la marge brute. Le code R utilisé pour le créer suit l'exemple.

L'exemple ci-dessus a été créé à l'aide du code R suivant dans l'éditeur de script de visualisation R :

Code Snippet
12345678
# load package library(wordcloud) # get words words <- BestRunCorpRetail$`City` # get frequency frequency <- BestRunCorpRetail$`Gross Margin` # generate word cloud wordcloud(words, frequency, scale = c(4, 1.5), rot.per=0.2, colors=brewer.pal(8, "Blues"))

Diagramme de réseau Sankey

Dans cet exemple, vous pouvez voir qu'un diagramme de réseau Sankey a été créé pour afficher les réclamations par région, pays et ville.

Exemple de diagramme de réseau Sankey dans un scénario SAP Analytics Cloud. Le code R utilisé pour le créer suit l'exemple.

Voici un exemple de graphique dans lequel les utilisateurs peuvent passer la souris sur des éléments pour afficher les informations associées, comme vous pouvez le voir dans l'image suivante.

Exemple de diagramme de réseau Sankey. La souris est survolée par la France, montrant 31 815 plaintes pour toute la France. Toutes les données de France s'affichent désormais en gris foncé.

L'exemple ci-dessus a été créé à l'aide du code R suivant dans l'éditeur de script de visualisation R :

Code Snippet
12345678910111213141516171819202122232425262728293031323334353637
# import package dplyr and networkD3 suppressPackageStartupMessages(library(dplyr)) library(networkD3) # de-factorize three level columns in SankeyData2 to strings BestRunCorpRetail$Region <- as.character(BestRunCorpRetail$Region) BestRunCorpRetail$Country <- as.character(BestRunCorpRetail$Country) BestRunCorpRetail$City <- as.character(BestRunCorpRetail$City) # create the first- and second-level decomposition dataset as list of (source, target, amount) level_1 <- aggregate(BestRunCorpRetail[,4], by=list(BestRunCorpRetail$Region, BestRunCorpRetail$Country), FUN=sum) level_2 <- aggregate(BestRunCorpRetail[,4], by=list(BestRunCorpRetail$Country, BestRunCorpRetail$City), FUN=sum) # rename the headers in the two level data frames names(level_1) <- c("Source","Target","Complains") names(level_2) <- c("Source","Target","Complains") # stack the two level data frames together sankeyData <- suppressWarnings(bind_rows(level_1, level_2)) # create a list of nodes in all levels and index them from 0 sankeyNodes <- data.frame(Name = unique(c(sankeyData$Source, sankeyData$Target))) sankeyNodes$index <- 0:(nrow(sankeyNodes)-1) # create a sankeyLinks data frame by masking node names in sankeyData with their indexes in sankeyNodes sankeyLinks <- merge(sankeyData, sankeyNodes, by.x="Source", by.y="Name") sankeyLinks <- merge(sankeyLinks, sankeyNodes, by.x="Target", by.y="Name") # select the masked columns and rename the headers sankeyLinks <- sankeyLinks[, c(4,5,3)] names(sankeyLinks) <- c("Source","Target","Complains") # call the sankeyNetwork() function to generate the sankey diagram sankeyNetwork(Links = sankeyLinks, Nodes = sankeyNodes, Source = "Source", Target = "Target", Value = "Complains", NodeID = "Name", fontSize = 10, nodeWidth = 5, nodePadding = 5 , unit="Complains")

Diagramme à barres polaires

Dans cet exemple, vous pouvez voir qu'un diagramme à barres polaires a été créé pour afficher la marge brute et le chiffre d'affaires par région.

Exemple de graphique à barres polaires dans une présentation SAP Analytics Cloud. Le code R utilisé pour le créer suit l'exemple.

L'exemple ci-dessus a été créé à l'aide du code R suivant dans l'éditeur de script de visualisation R :

Code Snippet
123456789101112131415161718192021222324252627
library(ggplot2) library(reshape2) SalesRevenue <- as.numeric(BestRunCorpRetail$`Sales Revenue`) / 1000 total_GrossMargin <- sum(BestRunCorpRetail$`Gross Margin`) Region <- as.character(BestRunCorpRetail$Region) percentage <- BestRunCorpRetail$`Gross Margin` * 100/ total_GrossMargin percentage_char <- as.character(formatC(percentage, digits = 2, format = "f")) width <- percentage * 3.6 GrossMargin <- c(width[1]/2) label <- paste(percentage_char, seq = "%", sep = "") for (i in 2:length(width)) { GrossMargin <- c(GrossMargin, sum(width[1:i-1]) + width[i]/2) } angle <- GrossMargin for (i in 1:length(angle)) { if (angle[i] >= 180) { angle[i] <- angle[i] - 180 } } rose <- data.frame(SalesRevenue, Region, GrossMargin) p <- ggplot(rose, aes(x=GrossMargin, y=SalesRevenue, fill=Region))+ geom_bar(width=width, stat="identity")+ geom_text(aes(x=GrossMargin, y=SalesRevenue+40, label=label, angle=angle-90), size=5)+ labs(x="Gross Margin %", y="Sales Revenue ") p + coord_polar(theta="x", start=0, direction=-1)

Diagramme de décalage

Dans cet exemple, vous pouvez voir qu'un graphique de décalage a été créé pour afficher le nombre de problèmes signalés pour chaque trimestre.

Exemple de diagramme de décalage dans une présentation SAP Analytics Cloud. Le code R utilisé pour le créer suit l'exemple.

L'exemple ci-dessus a été créé à l'aide du code R suivant dans l'éditeur de script de visualisation R :

Code Snippet
1234567891011121314151617181920212223242526272829303132333435363738394041
library(lubridate) library(dplyr) library(ggplot2) library(forecast) ## Prepare data BestRunCorpRetail$`Number of Issues reported` <- BestRunCorpRetail$`Number of Issues reported` / 1000 df <- BestRunCorpRetail %>% mutate(Year = as.integer(as.character(Year))) %>% mutate(quarter_num = as.numeric(substr(Quarter, 2, 2))) %>% mutate(first_month_of_quarter = (quarter_num * 3) -2) %>% mutate(first_day_of_quarter = make_date( Year, first_month_of_quarter, 1)) %>% select(first_day_of_quarter, `Number of Issues reported`) %>% arrange(first_day_of_quarter) ## Convert to ts object first_period = min(df$first_day_of_quarter) last_period = max(df$first_day_of_quarter) tso <- ts(df$`Number of Issues reported`, start = c(year(first_period), quarter(first_period)), end = c(year(last_period), quarter(last_period)), frequency = 4) ## Plot ts <- window(tso,start=2021) p <- gglagplot(ts, do.lines = TRUE, seasonal=TRUE, colour=TRUE, diag=FALSE , lags = 9) + labs(title = "Lag plot - Quarterly Number of Issues reported (in k)") ## Layout p + theme( plot.title = element_text(color="red", size=15, face="bold", hjust=0.5 ,margin = margin(t = 0, r = 0, b = 16, l = 0)) , panel.border = element_rect(colour = "blue", fill=NA) , axis.ticks = element_line( size = 1, linetype = 'solid') , axis.ticks.length = unit(8, "pt"), axis.text.x = element_text(color="black", size = 8, face = "bold" , margin = margin(t = 6, r = 0, b = 0, l = 0)) , axis.title.x = element_text(color="blue", size = 12, face = "bold", margin = margin(t = 10, r = 0, b = 0, l = 0)) , axis.text.y = element_text(color="red", size = 8, face = "bold" , margin = margin(t = 0, r = 6, b = 0, l = 0)) , axis.title.y = element_text(color="yellow", size =12, face = "bold", margin = margin(t = 0, r = 10, b = 0, l = 0)) , axis.line = element_line(colour = "black") , strip.text = element_text(color="blue", size = 12, face = "bold") )

Graphique de Pareto

Dans cet exemple, vous pouvez voir qu'un diagramme de Pareto a été créé pour afficher le chiffre d'affaires par région.

Exemple de graphique de Pareto dans une présentation SAP Analytics Cloud. Le code R utilisé pour le créer suit l'exemple.

L'exemple ci-dessus a été créé à l'aide du code R suivant dans l'éditeur de script de visualisation R :

Code Snippet
123456789
library(ggplot2) library(qcc) Sales = BestRunCorpRetail$`Sales Revenue` / 1000 names(Sales) = BestRunCorpRetail$`Country` pareto.chart(Sales, ylab = "Sales",main='Pareto Chart For Sales Revenue',col=heat.colors(length(Sales)))