Power Bi и R. Что происходит с моим набором данных? - PullRequest
0 голосов
/ 21 февраля 2020

Я хочу, чтобы эта визуализация работала в Power BI

https://www.neo-reliability.com/post/building-an-interactive-risk-matrix-using-r/

Я могу заставить ggplot отображать (risk_p) так же хорошо, как Пока я импортирую данные, используя скрипт r, как в учебнике. Но когда я пытаюсь импортировать данные в power bi, а затем пытаюсь использовать столбцы, как при использовании любого другого визуального изображения, я получаю эту странную ошибку. значение цвета, чтобы увидеть, что происходит. Странно это работает, но я получаю этот вывод.

матрица риска

Суммирование отключено для каждой категории, но похоже, что оно выдает суммарный «Тип» с агрегированные ячейки ... одна точка графика для каждого вида (включая пробел, который никогда не встречается, поэтому он исключается, кроме как в легенде). Что мог сделать Power BI, чтобы думать, что должна быть четвертая пустая категория? Что я могу сделать для правильного построения графика?

Копия моего отредактированного кода для power bi ниже.

Спасибо !!

# The following code to create a dataframe and remove duplicated rows is always executed and acts as a preamble for your script: 

# dataset <- data.frame(ID, Title, Risk, Type, Interim, Consequence, Likelihood)
# dataset <- unique(dataset)

# Paste or type your script code here:

library("ggplot2", lib.loc = .libPaths("C:/Users/Bparsons/Documents/R/win-library/3.6"))
library("plotly", lib.loc = .libPaths("C:/Users/Bparsons/Documents/R/win-library/3.6"))
library("dplyr", lib.loc = .libPaths("C:/Users/Bparsons/Documents/R/win-library/3.6"))

# Creating heatmap background for Risk Matrix

# setting the score in order to calculate the risk level
Likelihood_score <- rep(c(1,2,4,6,12),5)
Consequence_score <- rep(c(1,2,4,6,12),each=5)
Likelihood <- rep(c(1:5),5)
Consequence <- rep(c(1:5),each=5)
df <- data.frame(Likelihood,Consequence)
df <- mutate(df, risk_score = Consequence_score * Likelihood_score,
             Risk = case_when(risk_score >= 0 & risk_score < 6 ~ 1,
                              risk_score >= 6 & risk_score < 12 ~ 2,
                              risk_score >= 12 & risk_score < 32  ~ 3,
                              risk_score >= 32 ~ 4) )


# plotting 
risk_p<- ggplot(df,aes(x =Likelihood, y =Consequence, fill=Risk))+
  geom_tile()+
  scale_fill_gradientn(colours = c("red", "orange","#EEEE00","#008000"),guide=FALSE)+
  scale_x_continuous(trans = "reverse",name= "Frequency",breaks = 0:5, expand = c(0, 0))+
  scale_y_continuous(trans = "reverse",name = "Consequence",breaks = 0:5, expand = c(0, 0))+
  #coord_fixed()+
  theme_bw()+
  geom_hline(yintercept = seq(1.5,5.5), color = "white")+
  geom_vline(xintercept = seq(1.5,5.5), color = "white")+
  ggtitle("5 X 5 Interactive Risk Matrix")+
  theme(legend.position="bottom")+
  guides(color=guide_legend(title="Selected Plants"))+
  geom_jitter(data = dataset,
              # position = "jitter",
              inherit.aes = FALSE, width= 0.3,height = 0.3,
              aes(y = Consequence,
                  x = Likelihood, 
                  col = Type,
                  text = paste("<b>ID#:</b>",ID,"<br>",
                               "<b>Risk:</b>",Risk,"<br>",
                               "<b>Type:</b>",Type,"<br>",
                               "<b>Interim Action:</b>",Interim)))+
  scale_color_manual(values = c("#9400D3", "#9400D3","#009fdf","#aaaaaa")
  )

risk_p
...