Forum Discussion
How do I display a data grid in PowerBI
- 9 years ago
Something like this:
Notice that Patient C does not data for certain days and there is one Unk (Day 2 of Patient A).
= Table.FromRows({ { "A","A1", 1, 1, "Pos", "https://cdn4.iconfinder.com/data/icons/keynote-and-powerpoint-icons/256/Plus-128.png" }, { "A","A2", 1, 2, "Unk", "" }, { "A","A3", 1, 4, "Neg" ,"https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/128x128/Minus_Circle_Green.png" }, { "A","A4", 1, 6, "Pos", "https://cdn4.iconfinder.com/data/icons/keynote-and-powerpoint-icons/256/Plus-128.png" }, { "A","A5", 1, 12, "Pos", "https://cdn4.iconfinder.com/data/icons/keynote-and-powerpoint-icons/256/Plus-128.png" }, { "A","A6", 1, 24, "Pos","https://cdn4.iconfinder.com/data/icons/keynote-and-powerpoint-icons/256/Plus-128.png" }, { "A","A7", 1, 48, "Neg" ,"https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/128x128/Minus_Circle_Green.png" }, { "B","B1", 2, 1, "Neg" ,"https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/128x128/Minus_Circle_Green.png" }, { "B","B2", 2, 2, "Pos" ,"https://cdn4.iconfinder.com/data/icons/keynote-and-powerpoint-icons/256/Plus-128.png" }, { "B","B3", 2, 4, "Neg","https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/128x128/Minus_Circle_Green.png" }, { "B","B4", 2, 6, "Neg","https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/128x128/Minus_Circle_Green.png" }, { "B","B5", 2, 12, "Pos","https://cdn4.iconfinder.com/data/icons/keynote-and-powerpoint-icons/256/Plus-128.png" }, { "B","B6", 2, 24, "Pos", "https://cdn4.iconfinder.com/data/icons/keynote-and-powerpoint-icons/256/Plus-128.png" }, { "B","B7", 2, 48, "Pos", "https://cdn4.iconfinder.com/data/icons/keynote-and-powerpoint-icons/256/Plus-128.png" }, { "B","B8", 2, 64, "Pos", "https://cdn4.iconfinder.com/data/icons/keynote-and-powerpoint-icons/256/Plus-128.png" }, { "C","C1", 3, 1, "Neg" ,"https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/128x128/Minus_Circle_Green.png" }, { "C","C2", 3, 2, "Pos" ,"https://cdn4.iconfinder.com/data/icons/keynote-and-powerpoint-icons/256/Plus-128.png" }, { "C","C3", 3, 4, "Neg","https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/128x128/Minus_Circle_Green.png" }, { "C","C4", 3, 6, "Neg","https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/128x128/Minus_Circle_Green.png" } }, { "PatientID","PatientIDNumber", "YHelper", "StudyDay", "TestResults", "Image" }) - Anonymous9 years ago
Though it has Known Limitations (see https://powerbi.microsoft.com/en-us/documentation/powerbi-service-r-visuals/#known-limitations), an R visual can do it. See below for sample R script (12 lines without comments and blanks) and output.
library(ggplot2) # Needed for ggplot library(ggthemes) # has a clean theme for ggplot2 library(tidyr) # provide 'complete' function for empty heatmap cells #Convert the (integer) StudyDay to a factor to avoid gaps in the X axis dataset$StudyDay=with(dataset,factor(StudyDay)) #Fill missing data values, to avoid blank cells in the heatmap dataset <- dataset %>% complete(PatientID, StudyDay) # Avoid having to reference dataset$ each time in function calls attach(dataset) #Plot the dataset with TestResults to set the fill colour ggplot(dataset, aes(x=StudyDay, y=PatientID, fill=TestResults)) + #geom_tile to present as grid per https://www.rstudio.com/wp-content/uploads/2015/12/ggplot2-cheatsheet-2.0.pdf geom_tile(color="black", size=0.1) + #Set the fill colours for TestResults scale_fill_manual(values = c("Pos" = "green", "Neg" = "red", "Unk" = "blue")) + #Set square tiles coord_equal() + #Apply tidy Tufte theme with no axis ticks theme_tufte(base_family="arial", ticks=FALSE) + #Order by reverse PatientID scale_y_discrete(limits = rev(levels(PatientID)))
- parry2k9 years agoSuper User
Very well done Vvelarde and well explained. I tried but I think you provided the exact solution. Thank you!
- DBirdmanAR9 years agoRegular Visitor
Hi All,
I'll try Vvelarde's solution but in the meantime I was able to use the Enhanced Scatterplot (https://powerbi.microsoft.com/en-us/documentation/powerbi-service-tutorial-enhancedscatter/) and was able to get something close to what I wanted.
I'd like the icons bigger
Visualization:
Data is:
= Table.FromRows({ { "A1", 1, 1, "Pos", "https://cdn4.iconfinder.com/data/icons/keynote-and-powerpoint-icons/256/Plus-128.png" }, { "A2", 1, 2, "Pos", "https://cdn4.iconfinder.com/data/icons/keynote-and-powerpoint-icons/256/Plus-128.png" }, { "A3", 1, 4, "Neg" ,"https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/128x128/Minus_Circle_Green.png" }, { "A4", 1, 6, "Pos", "https://cdn4.iconfinder.com/data/icons/keynote-and-powerpoint-icons/256/Plus-128.png" }, { "A5", 1, 12, "Pos", "https://cdn4.iconfinder.com/data/icons/keynote-and-powerpoint-icons/256/Plus-128.png" }, { "A6", 1, 24, "Pos","https://cdn4.iconfinder.com/data/icons/keynote-and-powerpoint-icons/256/Plus-128.png" }, { "A7", 1, 48, "Neg" ,"https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/128x128/Minus_Circle_Green.png" }, { "A8", 1, 64, "Pos", "https://cdn4.iconfinder.com/data/icons/keynote-and-powerpoint-icons/256/Plus-128.png" }, { "B1", 2, 1, "Neg" ,"https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/128x128/Minus_Circle_Green.png" }, { "B2", 2, 2, "Pos" ,"https://cdn4.iconfinder.com/data/icons/keynote-and-powerpoint-icons/256/Plus-128.png" }, { "B3", 2, 4, "Neg","https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/128x128/Minus_Circle_Green.png" }, { "B4", 2, 6, "Neg","https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/128x128/Minus_Circle_Green.png" }, { "B5", 2, 12, "Pos","https://cdn4.iconfinder.com/data/icons/keynote-and-powerpoint-icons/256/Plus-128.png" }, { "B6", 2, 24, "Pos", "https://cdn4.iconfinder.com/data/icons/keynote-and-powerpoint-icons/256/Plus-128.png" }, { "B7", 2, 48, "Pos", "https://cdn4.iconfinder.com/data/icons/keynote-and-powerpoint-icons/256/Plus-128.png" }, { "B8", 2, 64, "Pos", "https://cdn4.iconfinder.com/data/icons/keynote-and-powerpoint-icons/256/Plus-128.png" } }, { "PatientID ", "YHelper", "StudyDay", "TestResults", "Image" })- DBirdmanAR9 years agoRegular Visitor
Hi All,
Vvelarde's solution works for a binary system (1's and blanks).
My data is constantly being added so some of the PatientIDs/StudyDay do not have data, others have Positive, Negative, and Unknown. When I use Vvelarde's method, you cannot hide the values of the text by changing the color because the text can only have one color.
I am not sure where to go at this point...