Quarto Dashboards 教程 3:Dashboard Data Display

news2024/12/21 14:52:55

「写在前面」

学习一个软件最好的方法就是啃它的官方文档。本着自己学习、分享他人的态度,分享官方文档的中文教程。软件可能随时更新,建议配合官方文档一起阅读。推荐先按顺序阅读往期内容:
1.quarto 教程 1:Hello, Quarto
2.quarto 教程 2:Computations
3.quarto 教程 3:Authoring
4.Quarto Dashboards 教程 1:Overview
5.Quarto Dashboards 教程 2:Dashboard Layout


目录

  • 1 图 Plots
    • 1.1 htmlwidgets
    • 1.2 R Graphics
  • 2 表格 Tables
    • 2.1 kable
    • 2.2 DT
  • 3 数值框 Value Boxes
    • 3.1 Icon and Color
    • 3.2 Shiny
    • 3.3 Markdown Syntax
  • 4 文本内容 Text Content
    • 4.1 Content Cards
    • 4.2 Content within Cells
    • 4.3 Leading Content
    • 4.4 Dynamic Content
  • 5 单元输出 Cell Output
    • 5.1 Dynamic Titles
    • 5.2 Excluded Cells
    • 5.3 Expression Printing
    • 5.4 Card Layout

官网教程:https://quarto.org/docs/dashboards/data-display.html

仪表盘是用于提供导航和呈现数据的组件组合。下面本文将介绍如何使用图、表格、数值框来呈现数据,以及如何在仪表盘中包含叙述性内容。

1 图 Plots

图是迄今为止仪表板中显示的最常见的内容类型。支持基于 JavaScript 的交互式绘图(例如 Altair 和 Plotly)和基于标准光栅的绘图(例如 Matplotlib 或 ggplot2)。

下面本文提供了一些在仪表盘中包含绘图的特定于语言的提示和技术,本教程只展示了 R 语言,Python 语言见官方文档。

1.1 htmlwidgets

htmlwidgets 框架为 JavaScript 数据可视化库提供高级 R 绑定。一些流行的 htmlwidgets 包括 Plotly、Leaflet、dygraphs。

您可以像使用普通 R plots 一样使用 htmlwidgets。例如,以下是我们嵌入 Leaflet 地图的方法:

library(leaflet)
leaflet() %>%
addTiles() %>%
addMarkers(lng=174.768, lat=-36.852,
popup="The birthplace of R")
alt

CRAN 上有几十个提供 htmlwidgets 的包。您可以在 htmlwidgets showcase 中找到几个更流行的 htmlwidgets 的示例用法,并浏览 gallery 中的所有可用 widgets。

1.2 R Graphics

您可以在仪表盘中使用标准 R 栅格图形(base、lattice、grid,等)创建的任何图。将标准 R 图形与静态仪表盘一起使用时,您需要更加注意使绘图的大小适合页面布局。请注意,这对于交互式 Shiny 仪表盘中的绘图来说不是问题,因为所有绘图类型均由 Shiny 动态调整大小。

静态仪表盘中良好的尺寸调整行为的关键是定义 knitr fig-widthfig-height 选项,使绘图能够尽可能紧密地适合其布局容器。

下面是一个布局示例,其中包含来自 R 基础图形的 3 个图:

## Row {height="65%"}

```{r}
#| fig-width: 10
#| fig-height: 8
plot(cars)
```

## Row {height="35%"}

```{r}
#| fig-width: 5
#| fig-height: 4
plot(pressure)
```

```{r}
#| fig-width: 5
#| fig-height: 4
plot(airmiles)
```
alt

我们为每个图指定了明确的fig-heightfig-width,以便它们的渲染大小尽可能接近其布局容器。请注意,这些尺寸的理想值通常需要通过实验来确定。

Tip
对于静态仪表盘,使用基于 JavaScript 的绘图有利有弊。虽然基于 JavaScript 的绘图可以比静态绘图更好地处理调整大小以填充其容器,但它们还将基础数据直接嵌入到已发布的页面中(每个绘图一份数据集的副本),这可能会导致加载时间变慢。

对于交互式 Shiny 仪表盘,所有绘图类型的大小都是动态调整的,因此调整大小行为不像静态仪表盘那样需要担心。

2 表格 Tables

您可以通过以下两种方式之一将数据表包含在仪表盘中:

  • 作为简单的表格显示。
  • 作为一个交互式小部件,包括排序和过滤。

下面我们提供了一些在仪表盘中包含表格的特定于语言的提示和技术。

有许多 R 包可用于生成表格输出。本文将在下面介绍两种更流行的方法(kable 和 DT)。

2.1 kable

简单的 markdown 表非常适合少量记录(即 20-250 行)。使用knitr::kable()函数输出 markdown 表:

```{r}
knitr::kable(mtcars)
```
alt

仪表盘中的简单 markdown 表格会自动填充其容器(根据需要水平和垂直滚动)。

2.2 DT

DT 包(DataTables JavaScript 库的接口)可以将 R 矩阵或数据框显示为支持过滤、分页和排序的交互式 HTML 表。

要包含 DataTable,请使用DT::datatable函数:

```{r}
library(DT)
datatable(mtcars)
```
alt

Options

请注意,仪表盘内会自动设置一些DT选项,以确保它们在不同尺寸的卡片中良好显示。选项默认值为:

options(DT.options = list(
bPaginate = FALSE,
dom = "ifrt",
language = list(info = "Showing _TOTAL_ entries")
))

您可以根据需要指定替代选项来覆盖这些默认值。

3 数值框 Value Boxes

数值框是在仪表盘中突出显示简单值的好方法。例如,这是一个包含三个数值框的仪表盘行:

alt

以下是您可以用来创建这些数值框的代码。请注意,我们在本示例中混合使用了 Python 和 R 单元来说明每种语言的语法。另请注意,我们假设变量 articlescommentsspam 是先前在文档中计算的。

## Row 

```{python}
#| content: valuebox
#| title: "Articles per day"
#| icon: pencil
#| color: primary
dict(
value = articles
)
```

```{python}
#| content: valuebox
#| title: "Comments per day"
dict(
icon = "chat",
color = "primary",
value = comments
)
```

```{r}
#| content: valuebox
#| title: "Spam per day"
list(
icon = "trash",
color = "danger",
value = spam
)
```

您可以选择在 YAML 中或在单元格打印的 dict()list()(分别适用于 Python 和 R)中指定数值框选项。当您希望图标或颜色根据值动态变化时,后一种语法很方便。

3.1 Icon and Color

数值框中使用的icon可以是 2,000 个可用的bootstrap icons中的任何一个。

color可以是任何 CSS 颜色值,但是有一些专为仪表盘调整的颜色别名,您可能会考虑默认使用:

Color AliasDefault Theme Color(s)
primaryBlue
secondaryGray
successGreen
infoBright Blue
warningYellow/Orange
dangerRed
lightLight Gray
darkBlack

虽然别名适用于所有themes,但它们对应的颜色有所不同。

3.2 Shiny

在 Shiny 交互式仪表盘中,您可以拥有根据应用程序状态动态更新的数值框。有关如何执行此操作的详细信息是特定于语言的:

使用 bslib::value_box() 函数以及从 bsicons 包中绘制的可选图标。例如:

```{r}
library(bslib)
library(bsicons)
value_box(
title = "Value",
value = textOutput("valuetext"),
showcase = bs_icon("music-note-beamed")
)
```

3.3 Markdown Syntax

您还可以使用纯 Markdown 创建数值框,在这种情况下,您通常会通过内联表达式包含该值。例如:

## Row

::: {.valuebox icon="pencil" color="blue"}
Articles per day

`{python} articles`
:::

4 文本内容 Text Content

虽然您经常使用绘图和表格填充仪表盘卡片,但您也可以在仪表盘中的任何位置包含任意的 markdown 内容。

4.1 Content Cards

下面是一个仪表盘,其中一列的最后一张卡片是纯 markdown:

alt

要做到这一点,只需在其他单元格旁边包含一个.carddiv:

## Column

```{python}
#| title: Population
px.area(df, x="year", y="pop", color="continent",
line_group="country")
```

```{python}
#| title: Life Expectancy
px.line(df, x="year", y="lifeExp", color="continent",
line_group="country")
```

::: {.card}
Gapminder combines data from multiple sources into
unique coherent time-series that can’t be found
elsewhere. Learn more about the Gampminder dataset at
<https://www.gapminder.org/data/>.
:::

请注意,如果您使用的是 Jupyter Notebook 进行创作,则 markdown 单元格将自动变为.Carddiv(即它们不需要显式的::: div 封套)。

4.2 Content within Cells

要在单元格输出的同时包含内容,只需将单元格和内容都包含在.card div 中即可。例如:

::: {.card title="Life Expectancy"}

```{python}
px.line(df, x="year", y="lifeExp", color="continent",
line_group="country")
```

Gapminder combines data from multiple sources into
unique coherent time-series that can’t be found
elsewhere. Learn more about the Gampminder dataset at
<https://www.gapminder.org/data/>.
:::

4.3 Leading Content

包含在仪表盘最顶部的内容(而不是明确包含在 .content div 中)被视为主导内容,并且将按原样包含,不带卡片样式(例如,无边框)。例如:

---
title: "My Dashboard"
format: dashboard
---

This content will appear above all of the other
rows/columns, with no border.

## Row

```{r}
print("")
```
alt

4.4 Dynamic Content

您可以使用内联表达式使文本内容动态化。例如,这里有一行包含使用 Python 表达式的文本内容:

::: {.card}
The sample size was `{python} sample`. The mean reported
rating was `{python} rating`.
:::

5 单元输出 Cell Output

notebook 或源文档中每个计算单元的输出将包含在卡片中。下面我们描述了创建卡片时要遵守的一些特殊规则。

5.1 Dynamic Titles

您可以通过打印title=表达式作为单元格的第一个输出来创建动态title(与将title=包含为 YAML 单元格选项相反)。例如:

```{r}
library(leaflet)

lat <- 48
long <- 350

cat("title=", "World Map at", lat, long)

leaflet() |> addTiles() |>
setView(long, lat, zoom = 2)
```

5.2 Excluded Cells

不产生输出的单元不会成为卡片(例如,用于导入包、加载和过滤数据等的单元)。如果某个单元产生了您想要排除的意外输出,请向该单元格添加output: false选项:

```{python}
#| output: false
# (code that produces unexpected output)
```

5.3 Expression Printing

默认情况下,顶级表达式的所有输出都显示在仪表盘中。这意味着可以轻松地从一个单元格生成多个图。例如:

```{python}
#| title: "Tipping Behavior"
px.box(df, x="sex", y="total_bill", color="smoker")
px.violin(df, x="sex", y="total_bill", color="smoker")
```

此行为对应于 Jupyter shell interactivity 的"all"设置。您可以使用ipynb-shell-interactivity选项在 Quarto 中自定义此行为。

5.4 Card Layout

如果一个单元格产生多个输出,您可以使用单元格布局选项来组织它们的显示。例如,这里我们修改示例以使用layout-ncol选项并排显示绘图:

```{python}
#| title: "Tipping Behavior"
#| layout-ncol: 2
px.box(df, x="sex", y="total_bill", color="smoker")
px.violin(df, x="sex", y="total_bill", color="smoker")
```
alt

有关自定义布局的其他文档,请参阅有关Figures的文章。


「结束」

注:本文为个人学习笔记,仅供大家参考学习,不得用于任何商业目的。如有侵权,请联系作者删除。

alt

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1625330.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FineBi中创建自定义的图表

FineBi中增加自己的自定义图表组件,比如: 的相关笔记: 1 获取有哪些BI自定义图表组件:http://localhost:8080/webroot/decision/v5/plugin/custom/component/list?_=1713667435473[{"name": "图表DEMO_EK","chartType": "amap_demo&q…

知识付费平台的搭建重点,会用到哪些三方服务?

知识付费平台的搭建重点主要包括以下几个方面&#xff1a; 确定目标用户群体&#xff1a;首先需要明确平台的目标用户是谁&#xff0c;他们有什么样的学习需求和付费习惯。这有助于为平台制定合适的内容策略和推广策略。内容策划与制作&#xff1a;知识付费平台的核心是内容&a…

AOI在SMT生产线的关键作用

在SMT&#xff08;表面贴装技术&#xff09;的生产过程中&#xff0c;AOI&#xff08;自动光学检测&#xff09;技术发挥着不可替代的作用。通过本文&#xff0c;我们将深入探讨AOI在提升SMT生产线效率和产品质量方面的关键优势。 AOI技术在SMT生产线的核心作用 精确检测元件位…

柱形图“变个装”,跟上时尚步伐!

前言 职场中&#xff0c;日报、周报、月报、年度总结&#xff0c;都离不开图表的制作&#xff0c;而柱状图又是最常用的一种&#xff0c;怎样的柱状图&#xff0c;才能让领导更容易阅读&#xff0c;甚至是眼前一亮呢&#xff1f;今天小编就将为大家介绍一下如何借助葡萄城公司…

Nginx基本使用 反向代理与负载均衡

什么是Nginx Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器。 其特点是占有内存少&#xff0c;并发能力强&#xff0c;nginx的并发能力在同类型的网页服务器中表现较好&#xff0c;而且几乎可以做到7*24不间断运行&#xff0c;即使运行数个月也不需要重新启动。 …

JavaEE——spring MVC请求处理

目录 主要目的&#xff1a; 1. Spring web 项目搭建 2. 添加依赖 3. 配置插件 4. 配置设置类 5. 编写controller层类 6. 编写测试的http请求 主要目的&#xff1a; 创建一个spring web项目&#xff1b; 创建控制类&#xff1b; 掌握如何配置MVC&#xff1b; 编写htt…

前端调用DRI后端API出现跨域资源共享(CORS)问题解决办法

目录 1. 引言2. 跨源资源共享和实现方法3. 在Django项目中配置django-cors-headers库Reference 1. 引言 在进行后端API开发时&#xff0c;有时会遇到“跨域资源共享 (CORS) 请求…被阻止“的错误&#xff0c;如图1所示。本文讲解如何在使用DRF&#xff08;Django REST Framewo…

区块链技术与应用学习笔记(12-13节)——北大肖臻课程

目录 12.BTC-匿名性 一、什么是匿名&#xff1f; 1&#xff0c;有可能破坏比特币匿名性的两个方面 2&#xff0c;如何提高匿名性 一个比特币用户能采用什么样的方法尽量提高个人的匿名性? 分解&#xff1a; 1、网络层怎么提高匿名性? 2、应用层怎么提高匿名性? 零知…

微信小程序开发:1.微信开发者工具应用

app.json文件作用 pages 记录所有的页面路经 window 全局定义小程序样式 style v2代表使用全新样式 sitemapLocation 指名sitemap.json存放路经 Project.config.json 是项目配置文件&#xff0c;用来记录我们对小程序个性化配置 setting保存了编辑相关配置projectna…

mac 教程 终端如何拆墙

一直觉得自己写的不是技术&#xff0c;而是情怀&#xff0c;一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的&#xff0c;希望我的这条路能让你们少走弯路&#xff0c;希望我能帮你们抹去知识的蒙尘&#xff0c;希望我能帮你们理清知识的脉络&#xff0…

FFmpeg下载教程(Windows版)

文章目录 下载地址步骤 下载地址 https://ffmpeg.org/download.html 步骤

保姆级银河麒麟V10高级服务器离线安装mysql5.7数据库

离线在银河麒麟高级操作系统v10安装mysql5.7 下载mysql5.7 MySQL :: Download MySQL Community Server (Archived Versions) 2、把下载好的包上传到服务器 3、解压 [root1-0001 ~]# cd /data/mysql[root1-0001 mysql]# tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz…

大语言模型在研究领域的应用——信息检索中的大语言模型

信息检索中的大语言模型 大语言模型提升信息检索任务利用大语言模型进行信息检索大语言模型增强的信息检索模型.检索增强的大语言模型输入优化策略.指令微调策略.预训练策略.总结应用建议未来方向大语言模型对于传统信息检索技术与应用范式带来了重要影响。这两者在技术路径上具…

算法项目(9)—— 大模型实现PDF检索加QA

本文包含什么? 使用大语言模型进行多个PDF问答检索加QA.gradio实现的网页界面操作,全套代码以及代码介绍运行有问题? csdn上后台随时售后.项目说明 本项目实现使用大语言模型为核心,gradio框架,调用vicuna实现多个pdf QA 代码运行 python3 main.pyimport gradio as gr fr…

80个在线小游戏源码

源码简介 搭建80个在线小游戏网站源码&#xff0c;解压即可食用&#xff0c;支持在本地浏览器打开。 安装教程 纯HTML&#xff0c;直接将压缩包上传网站目录解压即可 首页截图 源码下载 80个在线小游戏源码-小8源码屋

【中级软件设计师】上午题12-软件工程(2):单元测试、黑盒测试、白盒测试、软件运行与维护

【中级软件设计师】上午题12-软件工程&#xff08;2&#xff09; 1 系统测试1.1 单元测试1.2 集成测试1.2.1 自顶向下1.2.2 自顶向上1.2.3 回归测试 2 测试方法2.1 黑盒测试2.1.1 McCabe度量法 2.2 白盒测试2.2.1 语句覆盖-“每个流程”执行一次2.2.2 判定覆盖2.2.3 条件覆盖-A…

LangChain入门:24.通过Baby AGI实现自动生成和执行任务

随着 ChatGPT 的崭露头角,我们迎来了一种新型的代理——Autonomous Agents(自治代理或自主代理)。 这些代理的设计初衷就是能够独立地执行任务,并持续地追求长期目标。 在 LangChain 的代理、工具和记忆这些组件的支持下,它们能够在无需外部干预的情况下自主运行,这在真…

前端框架EXT.NET Dotnet 3.5开发的实验室信息管理系统(LIMS)成品源码 B/S架构

前端框架EXT.NET Dotnet 3.5开发的实验室信息管理系统&#xff08;LIMS&#xff09;成品源码 B/S架构 LIMS实验室管理系统 发展历史 实验室信息管理系统(LIMS)&#xff0c;就是指通过计算机网络技术对实验的各种信息进行管理的计算机软、硬件系统。也就是将计算机网络技术与现…

批量归一化(部分理解)

目的与疑惑 在深度学习中&#xff0c;每层输入数据的分布可能因为前一层参数的微小变动而有较大变化&#xff0c; 这种现象称为内部协变量偏移&#xff08;Internal Covariate Shift&#xff09;。 批量归一化通过规范化层输入来减少内部协变量偏移&#xff0c;使网络更稳定&a…

day05 51单片机-外部中断、定时器

1 外部中断——按键控制LED亮灭 1.1 需求描述 本案例通过检测SW3触发的外部中断实现P00对应LED的亮灭。 1.2 硬件设计 1.2.1 中断简介 单片机中断是一种重要的计算机编程概念,用于处理在程序执行过程中突然发生的事件或条件。这些事件可以是外部硬件触发的,如按下按钮、…