Explorando o código R no SAP Analytics Cloud

Objective

After completing this lesson, you will be able to trabalhar com código R.

Exemplos de visualizações R e o código R

Ao selecionar inserir e visualização R, você pode criar uma ampla variedade de gráficos usando um script de R.

Nesta lição, você descobrirá nove exemplos de visualizações R criadas no SAP Analytics Cloud e o código R associado a partir do editor de scripts.

Você pode copiar o código e usá-lo no SAP Hands-on Practice System para experimentar as várias visualizações R usadas nesta unidade.

Gráfico de linhas

Neste exemplo, você pode ver que um gráfico de linhas foi criado para mostrar a receita de vendas ao longo do tempo por região.

Um exemplo de um gráfico de linhas em uma história do SAP Analytics Cloud. O código R usado para criá-lo segue o exemplo.

O exemplo acima foi criado usando o seguinte código R no editor de script de visualização 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()

Gráfico de barras horizontal empilhado

Neste exemplo, você pode ver que um gráfico de barras horizontais empilhadas foi criado para mostrar a quantidade vendida por região e linhas.

Um exemplo de gráfico de barras horizontais empilhadas em uma história do SAP Analytics Cloud. O código R usado para criá-lo segue o exemplo.

Algumas visualizações R podem ser criadas como gráficos interativos. Este exemplo é um gráfico com o qual os usuários podem interagir para isolar e se concentrar em dados específicos, como você pode ver na imagem a seguir.

Alguns gráficos são interativos. À esquerda, você pode ver que os dados africanos estão isolados. À direita, os dados europeus são excluídos.

O exemplo acima foi criado usando o seguinte código R no editor de script de visualização 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"))

Gráfico de bolhas de dispersão

Neste exemplo, você pode ver que um gráfico de bolhas de dispersão interativo foi criado para mostrar uma comparação da receita de vendas por quantidade vendida para cada gerente de vendas.

Um exemplo de um gráfico de bolhas de dispersão interativo em uma história do SAP Analytics Cloud. O código R usado para criá-lo segue o exemplo.

Este é outro exemplo de um gráfico interativo. Os usuários podem reproduzir a interação, bem como passar o mouse sobre os elementos da mesma para visualizar informações adicionais, como você pode ver na imagem seguinte.

Exemplo de um gráfico interativo. A imagem no canto superior esquerdo tem o botão Reproduzir destacado. A imagem inferior direita tem uma dica que fornece informações adicionais.

O exemplo acima foi criado usando o seguinte código R no editor de script de visualização 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)

Gráfico de densidade

Neste exemplo, você pode ver que um gráfico de densidade foi criado para mostrar a densidade das linhas de produtos em cada região.

Um exemplo de um gráfico de densidade em uma história do SAP Analytics Cloud. O código R usado para criá-lo segue o exemplo.

O exemplo acima foi criado usando o seguinte código R no editor de script de visualização 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")

Nuvem de palavras

Neste exemplo, você pode ver que uma nuvem de palavras foi criada para mostrar a relação entre as cidades e a margem bruta associada.

Um exemplo de um Word Cloud em uma história do SAP Analytics Cloud. Em tons de azul, os nomes das cidades são dimensionados em relação à margem bruta. O código R usado para criá-lo segue o exemplo.

O exemplo acima foi criado usando o seguinte código R no editor de script de visualização 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"))

Diagrama de rede Sankey

Neste exemplo, você pode ver que um diagrama de rede Sankey foi criado para exibir reclamações por região, país e cidade.

Um exemplo de um diagrama de rede Sankey em uma história do SAP Analytics Cloud. O código R usado para criá-lo segue o exemplo.

Este é um exemplo de gráfico em que os usuários podem passar o mouse sobre elementos para visualizar as informações relacionadas, como você pode ver na imagem a seguir.

Exemplo de um gráfico de diagrama de rede Sankey. Mouse passa o mouse sobre a França, mostrando 31.815 reclamações para toda a França. Todos os dados da França agora são exibidos como cinza escuro.

O exemplo acima foi criado usando o seguinte código R no editor de script de visualização 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")

Gráfico de barras polar

Neste exemplo, você pode ver que um gráfico de barras polares foi criado para mostrar a margem bruta e a receita de vendas por região.

Um exemplo de um gráfico de barras polares em uma história do SAP Analytics Cloud. O código R usado para criá-lo segue o exemplo.

O exemplo acima foi criado usando o seguinte código R no editor de script de visualização 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)

Diagrama de atraso

Neste exemplo, você pode ver que um diagrama de atraso foi criado para exibir o número de problemas reportados em cada trimestre.

Um exemplo de um diagrama de atraso em uma história do SAP Analytics Cloud. O código R usado para criá-lo segue o exemplo.

O exemplo acima foi criado usando o seguinte código R no editor de script de visualização 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") )

Gráfico de Pareto

Neste exemplo, você pode ver que um gráfico de Pareto foi criado para mostrar a receita de vendas por região.

Um exemplo de um gráfico de Pareto em uma história do SAP Analytics Cloud. O código R usado para criá-lo segue o exemplo.

O exemplo acima foi criado usando o seguinte código R no editor de script de visualização 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)))