是否可以在 Power BI 的 R Script Visual 中使用 R Plotly 库?

Dav*_* D. 8 r highcharts plotly powerbi

有没有人试过在 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"))
Run Code Online (Sandbox Code Playgroud)

错误信息:

没有创建图像。R 代码不会导致创建任何视觉效果。确保您的 R 脚本生成 R 默认设备的绘图。

但在我的 R 桌面上运行完美。任何想法?

ves*_*and 7

对于PowerBI的新版本,它也可以生产Plotly使用图表Rggplot作为custom PowerBI visualizations。使用下面描述的方法,您可以从 PowerBI 表中生成密度图,如下所示:

在此处输入图片说明


资源:

我建议的解决方案用途nodejs可以在这里找到。那,以及我的建议的主要部分建立在这篇优秀的博客文章上,当涉及到使用和更新的细节时,它只有一些缺点custom PowerBI Visualizations。我可以参考那个链接并指出我做的不同的事情,但为了清晰和完整起见,我从头开始做整个事情。


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


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

1.2:重新启动计算机,启动命令提示符,然后运行:

npm install -g powerbi-visuals-tools
Run Code Online (Sandbox Code Playgroud)

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

输入:

pbiviz
Run Code Online (Sandbox Code Playgroud)

输出:

在此处输入图片说明


第 2 部分:制作 PowerBI 自定义视觉对象


2.1:创建一个文件夹来包含您的自定义可视化。

我正在使用命令提示符来执行此操作

# from the C:\ directory:
md pbiCustomR
cd pbiCustomR
Run Code Online (Sandbox Code Playgroud)

在该文件夹中,运行以下命令:

pbiviz new pbiDensity -t html
Run Code Online (Sandbox Code Playgroud)

这将创建一个新的视觉对象并安装一些必需的包。您可以更改pbiDensity为任何您想要的。

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

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

2.3:打开文件C:pbiqp\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');
####################################################
Run Code Online (Sandbox Code Playgroud)

上面的代码片段使用数据集中的一个数据Iris集,但我们将通过添加以下行来利用 PowerBI 文件中的可用数据:

df <- data.frame(X = Values$Data)
Run Code Online (Sandbox Code Playgroud)

该行从我们要命名的现有列 i PowerBI 文件构建一个数据框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');
####################################################
Run Code Online (Sandbox Code Playgroud)

2.4:完成您的自定义可视化。


在文件夹中C:\pbiCustomR\pbiDensity,使用命令提示符运行以下命令:

pbiviz package
Run Code Online (Sandbox Code Playgroud)

这将触发此输出:

在此处输入图片说明

当涉及到更高级的东西时,就是这样。剩下的就简单了!


第 3 部分 - 使用 R 在 PowerBI 中生成一些随机数据


3.1Home选项卡下,单击Edit Queries打开Power Query Editor.

3.2单击Enter Data,并且单击OK

3.3选择Transform > Run R Script并插入以下代码片段:

set.seed(123)
output <- data.frame(rnorm(100, mean=100, sd=10))
Run Code Online (Sandbox Code Playgroud)

这将在Query Settingscalled下产生一个新的步骤"output",以及一个带有随机数的表,而不是世界上最好的列名。

3.4将下面的步骤名称更改Applied StepstblRandom,并将列名称更改为,SampleData这样您最终会得到这样的结果:

在此处输入图片说明

3.5选择Home > Close&Apply返回 PowerBI Desktop。


**第 4 部分 - 导入和使用您的自定义可视化


4.1在 下Visualizations,单击带有三个点的图标并选择Import from file

在此处输入图片说明

4.1导航到C:\pbiCustomR\pbiDensity\dist,选择pbiDensity.pbiviz,单击OK,下面会出现一个新图标Visualizations

在此处输入图片说明

And this is important为了让您的可视化的工作,你列的名称具有以匹配您的[R脚本参考。而在我们的案例中,他们没有(只是为了说明这一点)。因此将名称列更改SampleDataData.

4.2单击您的新图标以插入一个可视化占位符,并将您的Data列拖到该图标上:

在此处输入图片说明

然后你去:

在此处输入图片说明

现在,您可以plotly随意使用工具栏的全部灵活性:

在此处输入图片说明


第 5 部分 - 编辑 R 脚本、更新和重新导入自定义可视化


5.1在 RStudio 中编辑您的脚本并在不更改文件名的情况下保存它

5.2导航到您的自定义文件夹并运行pbiviz package

5.3在 PowerBI 中删除您现有的自定义视觉对象并再次导入

  • 只是一点,运行“pbiviz new ANYNAME -t html”会抛出一个错误:“错误无法创建视觉效果。错误:模板无效”,所以我必须将其更改为“pbiviz new ANYNAME -t rhtml” (2认同)

Lif*_*ang 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")
Run Code Online (Sandbox Code Playgroud)