在Power BI的R脚本视觉化中,是否可以使用R Plotly库?

12

有人尝试在Power BI的R Script Visual中使用PlotlyHighchart吗?

当我在R脚本编辑器中尝试运行时:

library(ggplot2)
library(plotly)
x <- 1:5
y <- c(1, 3, 2, 3, 1)
plot_ly(x = dataset$period, y = dataset$mean, name = "spline", line = list(shape = "spline"))

错误信息:

未创建任何图像。R代码未创建任何可视化内容。确保您的R脚本产生了一个绘图到R默认设备。

但在我的R桌面上运行得很完美。有什么想法吗?


2
截至2017年3月6日,plot_ly已在Power BI中得到支持:Power BI Announcement。在该发布后,运行plot_ly存在问题:Power BI Forum - jpf5046
@Dave D. 我的建议解决了你的问题吗? - vestland
3个回答

12
对于较新版本的PowerBI,也可以使用R和ggplot作为自定义PowerBI可视化工具来生成Plotly图表。通过下面描述的方法,您可以从PowerBI表格生成一个密度图,如下所示:

enter image description here


资源:

我的建议解决方案使用了可以在这里找到的nodejs。除此之外,我的建议的主要部分是基于这篇优秀的博客文章,只是在使用和更新自定义PowerBI可视化的细节方面有一些小缺点。我本来可以只引用那个链接并指出我所做的不同之处,但为了清晰和完整起见,我从头开始做了整个过程。


第一部分 - 下载并安装node.js

1.1: 链接: https://nodejs.org/en/

1.2: 重新启动您的计算机,打开命令提示符,并运行以下命令:

npm install -g powerbi-visuals-tools

1.3:在命令提示符中运行以下命令来检查您的安装是否成功:
输入:
pbiviz

输出:

enter image description here


第二部分:创建一个PowerBI自定义可视化
2.1:创建一个文件夹来存放您的自定义可视化内容。
我正在使用命令提示符来完成这个操作。
# from the C:\ directory:
md pbiCustomR
cd pbiCustomR

在那个文件夹中,运行以下命令:
pbiviz new pbiDensity -t rhtml

这将创建一个新的可视化并安装一些必需的软件包。您可以将pbiDensity更改为您想要的任何内容。

2.2:导航到文件夹C:\pbiCustomR\pbiDensity并仔细查看其内容。

那里有很多东西,但我们只关注文件script.R以及文件pbiDensity.pbiviz(位于子文件夹dist中)。script.R是设置您的R脚本的模板。我们稍后会对其进行编辑。pbiDensity.pbiviz是PowerBI自定义可视化,您稍后也将在Power BI中导入它。

2.3:打开文件C:\pbiCustomR\pbiDensity\script.R以查看其内容(我强烈推荐使用RStudio):

source('./r_files/flatten_HTML.r')

############### Library Declarations ###############
libraryRequireInstall("ggplot2");
libraryRequireInstall("plotly")
####################################################

################### Actual code ####################
g = qplot(`Petal.Length`, data = iris,fill = `Species`, main = Sys.time());
####################################################

############# Create and save widget ###############
p = ggplotly(g);
internalSaveWidget(p, 'out.html');
####################################################

上面的代码片段使用了一个来自Iris数据集的数据,但我们将通过添加这行代码来使用PowerBI文件中可用的数据:
df <- data.frame(X = Values$Data)

那行代码从现有的列中构建了一个数据帧,我们将把它命名为Data。但是首先,请继续将上面的完整代码片段更改为:
source('./r_files/flatten_HTML.r')

############### Library Declarations ###############
libraryRequireInstall("ggplot2");
libraryRequireInstall("plotly")
####################################################

################### Actual code ####################
df <- data.frame(X = Values$Data)

# Build basic ggplot
g <- ggplot(df, aes(x = X))

# Add density plot
g = g + geom_density(colour = 'blue')

############# Create and save widget ###############
p = ggplotly(g);
internalSaveWidget(p, 'out.html');
####################################################

2.4:完成您的自定义可视化。
在文件夹 C:\pbiCustomR\pbiDensity 中,使用命令提示符运行以下命令:
pbiviz package

这将触发以下输出:

enter image description here

这就是关于更高级的东西的全部了。剩下的都很简单!
第三部分 - 使用R在PowerBI中生成一些随机数据
3.1 在“主页”选项卡下,点击“编辑查询”以打开“Power Query Editor”。
3.2 点击“输入数据”,然后仅仅点击“确定”。
3.3 选择“转换 > 运行 R 脚本”,并插入以下片段:
set.seed(123)
output <- data.frame(rnorm(100, mean=100, sd=10))

这将在“查询设置”下生成一个名为“output”的新步骤,以及一个带有不是世界上最好的列名的随机数表。
3.4 将“应用步骤”下的步骤名称更改为“tblRandom”,列名称更改为“SampleData”,这样你就会得到以下结果:

enter image description here

3.5 选择 "主页 > 关闭和应用" 返回到 PowerBI Desktop。
**第四部分 - 导入和使用您的自定义可视化**

4.1 在“可视化”下,点击带有三个点的图标,然后选择“从文件导入”。

enter image description here

4.1 导航到 C:\pbiCustomR\pbiDensity\dist,选择 pbiDensity.pbiviz,点击 OK,然后在 Visualizations 下应该会出现一个新的图标。

enter image description here

这一点很重要为了使您的可视化工作,您的列名必须与R脚本中的引用匹配。而在我们的情况下,它们并不匹配(只是为了强调一下)。所以将列名SampleData改为Data

4.2 点击您的新图标以插入可视化占位符,并将Data列拖放到其中:

enter image description here

这就是你要的:

enter image description here

现在您可以充分利用plotly工具栏的灵活性:

enter image description here


第五部分 - 编辑 R 脚本,更新并重新导入自定义可视化
5.1 在RStudio中编辑你的脚本,并保存时不要更改文件名。
5.2 导航到你的自定义文件夹,并运行 "pbiviz package"。
5.3 在PowerBI中删除你现有的自定义可视化,并重新导入它。

1
我正在处理这个问题,但是当我在cmd提示符中输入以下命令时: pbiviz new pbiDensity -t html我收到了以下错误信息: info Creating new visual error Unable to create visual. Error: Invalid template如果有任何帮助或建议来解决这个问题,将不胜感激。 - jschlereth
5
仅提醒一点,运行命令'pbiviz new ANYNAME -t html' 会导致错误提示:"error Unable to create visual. Error: Invalid template",因此我必须将其更改为"pbiviz new ANYNAME -t rhtml"。 - Mohsen Sichani
1
感谢@vestland,希望这个答案能够帮助其他人,就像它帮助了我一样。这个问题的答案是一个不错的简短教程,值得保持更新 :) - Mohsen Sichani
1
感谢@vestland - 很棒的帖子!需要强调的一点是,Power BI应用程序传递给R脚本的数据集名称为“Values”,而不是Power BI中直接使用R脚本可视化的“dataset”。我的原型PBI应用程序使用了一个R脚本可视化,然后我将其修改为plotly对象。简单的修改是这一行:dataset <- Values然后 dataset %>% ... - James N
1
只是一条注释 - 看起来powerbi-visuals-tools npm包(当前版本为5.1.1)存在问题,导致无法显示可视化内容。根据论坛评论,目前最后一个正常工作的版本是4.05。要安装4.05版本,请使用以下命令:npm install -g powerbi-visuals-tools以下是描述此问题的论坛帖子。https://community.fabric.microsoft.com/t5/Developer/Issue-with-R-plotly-in-pbiviz-versions-4-0-6/m-p/2940046 - undefined
显示剩余3条评论

3

目前 Power BI 仅支持将 R 可视化组件创建的图表呈现为 PNG 格式。

请尝试以下方法:

p <- plot_ly(x = dataset$period, y = dataset$mean, name = "spline", line = list(shape = "spline"))
plotly_IMAGE(p, format = "png", out_file = "out.png")

2

更改

使用命令“pbiviz new pbiDensity -t html”

替换为

使用命令“pbiviz new pbiDensity -t rhtml”


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接