SAP Analytics Cloud での R コードの探索

Objective

After completing this lesson, you will be able to r コードを使用します。

R ビジュアライゼーションと R コードの例

挿入と R ビジュアライゼーションを選択することで、R のスクリプトを使用してさまざまなチャートを作成できます。

このレッスンでは、SAP Analytics Cloud で作成された R ビジュアライゼーションの 9 つの例と、スクリプトエディタから関連する R コードについて学習します。

この章で使用するさまざまな R ビジュアライゼーションを試すために、コードをコピーして SAP 実践システムで使用することができます。

折れ線グラフ

この例では、地域別の経時的な売上を示す折れ線グラフが作成されています。

SAP Analytics Cloud ストーリーの折れ線グラフの例。登録に使用される R コードは、例に従います。

上記の例は、R ビジュアライゼーションスクリプトエディタで次の 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()

積み上げ横棒グラフ

この例では、地域別および折れ線別の販売数量を示す積み上げ水平棒グラフが作成されています。

SAP Analytics Cloud ストーリーの積上横棒グラフの例。登録に使用される R コードは、例に従います。

R ビジュアライゼーションの中には、インタラクティブチャートとして作成できるものがあります。この例は、以下の図に示すように、ユーザが操作して特定のデータを分離してフォーカスできるチャートです。

一部のチャートはインタラクティブです。左側には、アフリカのデータが分離されていることがわかります。右側では、ヨーロッパのデータは除外されます。

上記の例は、R ビジュアライゼーションスクリプトエディタで次の 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"))

散布図バブルチャート

この例では、営業マネージャごとの売上と販売数量の比較を示すために、インタラクティブな散布図チャートが作成されています。

SAP Analytics Cloud ストーリーにおけるインタラクティブな散布図の例。登録に使用される R コードは、例に従います。

これは、インタラクティブチャートのもう 1 つの例です。ユーザは、インタラクションを再生することができます。また、以下の図に示すように、インタラクションの要素にマウスポインタを合わせると、追加情報が表示されます。

インタラクティブチャートの例。左上の画像では、[再生] ボタンが強調表示されています。右下のイメージには、追加情報を提供するツールチップがあります。

上記の例は、R ビジュアライゼーションスクリプトエディタで次の 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)

密度チャート

この例では、各地域の製品ラインの密度を示す密度チャートが作成されていることを確認できます。

SAP Analytics Cloud ストーリーにおける密度チャートの例。登録に使用される R コードは、例に従います。

上記の例は、R ビジュアライゼーションスクリプトエディタで次の 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")

ワードクラウド

この例では、都市と関連する粗利益の関係を示すためにクラウドが作成されています。

SAP Analytics Cloud ストーリーにおけるワードクラウドの例。青色の影で、市区町村名は粗利益に関連してサイズが設定されます。登録に使用される R コードは、例に従います。

上記の例は、R ビジュアライゼーションスクリプトエディタで次の 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"))

サンキーネットワークダイアグラム

この例では、地域、国、および市区町村別のクレームを示すためにサンキーネットワークダイアグラムが作成されています。

SAP Analytics Cloud ストーリーにおけるサンキーネットワークダイアグラムの例。登録に使用される R コードは、例に従います。

これは、以下の図に示すように、ユーザが要素にカーソルを合わせて関連情報を表示できるチャートの例です。

サンキーネットワークダイアグラムチャートの例。マウスはフランスにマウスを掛け、フランス全土に31,815の苦情が寄せられている。現在、フランスのデータはすべて濃い灰色で表示されています。

上記の例は、R ビジュアライゼーションスクリプトエディタで次の 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")

極線棒グラフ

この例では、地域別の粗利益と売上を示す極線チャートが作成されています。

SAP Analytics Cloud ストーリーにおける極線チャートの例。登録に使用される R コードは、例に従います。

上記の例は、R ビジュアライゼーションスクリプトエディタで次の 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)

ラグプロット

この例では、各四半期に報告された問題の数を示すためにラグプロットが作成されていることがわかります。

SAP Analytics Cloud ストーリーにおけるラグプロットの例。登録に使用される R コードは、例に従います。

上記の例は、R ビジュアライゼーションスクリプトエディタで次の 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") )

パレートチャート

この例では、地域別の売上を示すパレートチャートが作成されています。

SAP Analytics Cloud ストーリーにおけるパレートチャートの例。登録に使用される R コードは、例に従います。

上記の例は、R ビジュアライゼーションスクリプトエディタで次の 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)))