教程:根据 R 脚本对 R 视觉对象创建漏斗图
- 版本 :2023.1(当前版本)
教程:根据 R 脚本对 R 视觉对象创建漏斗图
本文介绍如何使用 R 脚本对 R 视觉对象逐步创建漏斗图。
本文介绍如何执行以下操作:
为 RStudio 创建 R 脚本
在 Power BI 中创建 R 视觉对象
在 Power BI 中创建基于 PNG 的 R 驱动视觉对象
在 Power BI 中创建基于 HTML 的 R 驱动视觉对象
漏斗图提供了一种简单方法,用于使用、解释和显示预期的变化量。 漏斗使用置信度限制而形成,离群值显示为漏斗外的点。
在此示例中,漏斗图用于比较和分析各种数据集。
备注
在每组步骤下均可下载源文件。
使用数据集生成 R 脚本
下载最小 R 脚本及其数据表 dataset.csv。
接下来,编辑脚本以反映此脚本。 这将添加输入错误处理和用户参数以控制绘图的外观。
生成报表
接下来,编辑脚本以反映此脚本。 这会将 dataset.csv(而不是 read.csv)加载到 Power BI Desktop 工作区,并创建一个“癌症死亡率”表 。 请查看以下 PBIX 文件中的结果。
备注
dataset
是任何 R 视觉对象的输入 data.frame
的硬编码名称。
在 R 代码中创建 R 驱动的视觉对象和包
开始之前,请务必安装 PBIVIZ 工具。
运行以下命令来创建新的 R 驱动视觉对象:
Bash
pbiviz new funnel-visual -t rvisualcd funnel-visual
npm install
pbiviz package此命令通过初始模板视觉对象(模板的
-t
)创建文件夹 funnel-visual。 PBIVIZ 位于 dist 文件夹中,R 代码位于 script.r 文件中 。 尝试将其导入 Power BI 并查看会发生什么。编辑 script.r 文件,并将内容替换为你之前的脚本。
编辑 capabilities.json,并将字符串
Values
替换为dataset
。 这会将模板中的“角色”名称替换为类似于 R 代码中的名称。(可选)编辑 dependencies.json,并为 R 脚本所需的每个 R 包添加部分 。 这会告诉 Power BI 在首次加载视觉对象时自动导入这些包。
使用
pbiviz package
命令重新打包视觉对象,并尝试将其导入 Power BI。
备注
请参阅 PBIX 和源代码进行下载。
进行基于 R 的视觉对象改进
视觉对象使用起来并不方便,因为用户必须要知道输入表中的列顺序。
将输入字段
dataset
分为三个字段(角色):Population
、Number
和Tooltips
编辑 capabilities.json,并将
dataset
角色替换为这三个新角色,或下载 capabilities.json。需要更新
dataRoles
和dataViewMappings
两个部分,它们定义每个输入字段的名称、类型、工具提示和最大列数。有关详细信息,请参阅功能。
编辑 script.r 以支持将
Population
、Number
和Tooltips
作为输入数据帧而不是dataset
,或下载 script.r。提示
要跟踪 R 脚本的更改,请搜索注释块:
R复制
#RVIZ_IN_PBI_GUIDE:BEGIN: Added to enable visual fields...#RVIZ_IN_PBI_GUIDE:END: Added to enable visual fields#RVIZ_IN_PBI_GUIDE:BEGIN: Removed to enable visual fields ...#RVIZ_IN_PBI_GUIDE:BEGIN: Removed to enable visual fields
使用
pbiviz package
命令重新打包视觉对象,并尝试将其导入 Power BI。
备注
请参阅 PBIX 和源代码进行下载。
添加用户参数
为用户添加功能,以控制视觉对象元素的颜色和大小,包括 UI 中的内部参数。
编辑 capabilities.json 并更新
objects
部分。 在这里,我们定义每个参数的名称、工具提示和类型,并决定将参数划分为组(在本例中为三个组)。下载 capabilities.json;有关详细信息,请参阅对象属性
编辑 src/settings.ts 以反映此 settings.ts。 此文件采用 TypeScript 编写。
在这里,你将找到针对以下目的添加的两个代码块:
声明新接口以保存属性值
定义成员属性和默认值
编辑 script.r 以反映此 script.r。 这会通过为每个用户参数添加
if.exists
调用来添加对 UI 中参数的支持。提示
要跟踪 R 脚本的更改,请搜索注释:
R
#RVIZ_IN_PBI_GUIDE:BEGIN:Added to enable user parameters
...#RVIZ_IN_PBI_GUIDE:END:Added to enable user parameters#RVIZ_IN_PBI_GUIDE:BEGIN:Removed to enable user parameters
...#RVIZ_IN_PBI_GUIDE:END:Removed to enable user parameters可以决定不向 UI 公开参数,就像我们一样。
使用
pbiviz package
命令重新打包视觉对象,并尝试将其导入 Power BI。
备注
请参阅 PBIX 和源代码进行下载。
提示
在这里,我们同时添加了几种类型(布尔、数字、字符串和颜色)的参数。 对于简单情况,请参阅本示例了解如何添加单个参数。
将视觉对象转换为基于 RHTML 的视觉对象
生成的视觉对象基于 PNG,这种视觉对象无法对鼠标悬停进行响应并且无法执行放大等操作,因此我们需要将其转换为基于 HTML 的视觉对象。 我们将创建一个 R 驱动的基于 HTML 的空视觉对象模板,然后从基于 PNG 的项目中复制一些脚本。
运行以下命令:
Bash
pbiviz new funnel-visual-HTML -t rhtmlcd funnel-visual-HTML
npm install
pbiviz package打开 capabilities.json 并记下
"scriptOutputType":"html"
行。打开 dependencies.json 并记下列出的 R 包的名称。
打开 script.r 并记下结构。 由于它不使用外部输入,因此可以在 RStudio 中打开并运行它。
这将创建并保存 out.html。 此文件是自包含文件(没有外部依赖项),并且定义 HTML 小组件中的图形。
重要
对于
htmlWidgets
用户,r_files 文件夹中提供了 R 实用工具,以帮助将plotly
或widget
对象转换为自容式 HTML。与以前的视觉对象类型不同,此版本的 R 驱动视觉对象还支持
source
命令,以提高代码的可读性。将 capabilities.json 替换为上一步中的 capabilities.json,或下载 capabilities.json 。
请务必:
"scriptOutputType": "html"
将最新版 script.r 与模板中的 script.r 进行合并,或下载 script.r 。
新脚本使用
plotly
包将 ggplot 对象转换为 plotly 对象,然后使用htmlWidgets
包将其保存到 HTML 文件 。大多数实用工具函数会移动到 r_files/utils.r,并且添加了
generateNiceTooltips
函数以显示 plotly 对象。提示
要跟踪 R 脚本的更改,请搜索注释:
R
#RVIZ_IN_PBI_GUIDE:BEGIN:Added to create HTML-based
...#RVIZ_IN_PBI_GUIDE:BEGIN:Added to create HTML-based#RVIZ_IN_PBI_GUIDE:BEGIN:Removed to create HTML-based ...#RVIZ_IN_PBI_GUIDE:BEGIN:Removed to create HTML-based将最新版 dependencies.json 与模板中的 dependencies.json 进行合并以包含新的 R 包依赖项,或下载 dependencies.json 。
按照之前步骤中的相同方式编辑 src/settings.ts。
使用
pbiviz package
命令重新打包视觉对象,并尝试将其导入 Power BI。
备注
请参阅 PBIX 和源代码进行下载。
生成其他示例
请运行以下命令,创建一个空项目:
Bash
pbiviz new example -t rhtmlcd example
npm install
pbiviz package采用此展示中的代码,并进行突出显示的更改:
替换模板的 script.r 并再次运行
pbiviz package
。 现在,视觉对象已包含在 Power BI 报表中!
提示和技巧
建议开发者编辑 pbiviz.json 以存储正确的元数据,例如版本、电子邮件、名称、许可证类型等等 。
重要
guid 字段是视觉对象的唯一标识符。 如果为每个视觉对象创建一个新项目,则 GUID 也将不同。 仅当使用复制到新视觉对象的旧项目(禁止这样做)时,它才会相同。
编辑 assets/icon.png 以便为视觉对象创建唯一图标。
要使用与 Power BI 报表中相同的数据在 RStudio 调试 R 代码,请将以下内容添加到 R 脚本的开头(编辑
fileRda
变量):R
#DEBUG in RStudiofileRda = "C:/Users/yourUserName/Temp/tempData.Rda"if(file.exists(dirname(fileRda)))
{ if(Sys.getenv("RSTUDIO")!="")
load(file= fileRda) else
save(list = ls(all.names = TRUE), file=fileRda)
}这会保存 Power BI 报表中的环境,并将其加载到 RStudio 中。
无需使用 GitHub 上提供的代码从头开始开发 R 驱动的视觉对象。 可以选择要用作模板的视觉对象,并将代码复制到新项目中。
例如,尝试使用样条自定义视觉对象。
每个 R 视觉对象都会将
unique
运算符应用到其输入表。 要避免删除相同的行,请考虑添加具有唯一 ID 的额外输入字段,并在 R 代码中将其忽略。如果已有 Power BI 帐户,请使用 Power BI 服务即时开发视觉对象,而不是使用
pbiviz package
命令重新打包它们。
HTML 小组件库
浏览 HTML 小组件库中的视觉对象,以便在下一个视觉对象中使用。 为方便起见,我们创建了一个视觉对象项目存储库,其中有 20 多个交互式 HTML 视觉对象可供选择!
提示
要在 HTML 小组件之间进行切换,请使用“格式”>“设置”>“类型” 。 通过此 PBIX 文件进行试用。
将示例用于你的视觉对象
下载整个文件夹。
编辑 script.r 和 dependencies.json 以仅保留一个小组件 。
编辑 capabilities.json 和 settings.ts 以删除
Type
选择器 。将 visual.ts 中的
const updateHTMLHead: boolean = true;
更改为false
。 (以提高性能)更改 pbiviz.json 中的元数据,最重要的是
guid
字段。重新打包并继续根据需要自定义视觉对象。
备注
服务并不支持此项目中的所有小部件。