Quarto Dashboards 教程 2:Dashboard Layout

embedded/2024/9/20 7:19:40/ 标签: 程序人生

「写在前面」

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


目录

  • 1 导航 Navigation
  • 2 布局 Layout
    • 2.1 方向 Orientation
    • 2.2 Fill vs. Flow
    • 2.3 滚动 Scrolling
  • 3 页面 Pages
  • 4 标签集 Tabsets
  • 5 卡片 Cards
    • 5.1 显示选项 Display Options

官网教程:https://quarto.org/docs/dashboards/layout.html

仪表盘是用于提供导航和呈现数据的组件组合。下面本文将描述用于构建仪表盘导航(navigation)和布局(layout)的组件。

1 导航 Navigation

所有仪表盘都包含一个顶级导航栏,提供 title 和(可选的)logo 和 author。具有多个页面的仪表盘还包含导航栏上每个页面的链接:

alt

titleauthor 的指定与普通文档一样。您还可以包含一个 logo 和一个或多个 nav-buttons

--- 
title: "Palmer Penguins"
author: "Cobblepot Analytics"
format:
dashboard:
logo: images/penguins.png
nav-buttons: [linkedin, twitter, github]
---

导航按钮可识别以下特殊别名:linkedinfacebookreddittwittergithub。您还可以创建自定义按钮,如Nav Items中所述。例如:

format:
dashboard:
nav-buttons:
- reddit
- icon: gitlab
href: https://gitlab.com/

2 布局 Layout

在页面内,仪表盘组件使用交替的 rows 和 columns 进行布局。rows 和 columns 依次由 markdown headings 和计算单元定义。例如,这是一个包含两行的简单布局,其中第二行分为两列:

---
title: "Palmer Penguins"
author: "Cobblepot Analytics"
format: dashboard
---

## Row {height=70%}

```{python}
```

## Row {height=30%}

```{python}
```

```{python}
```
alt

此处,2 级 markdown 标题(例如## Row {height=70%})定义行的内容及其相对高度。```{python} 代码单元依次自动创建卡片,这些卡片排列在行内的列中。

标题文本不是必需的
尽管 Markdown 标题用于定义 Quarto 仪表盘中行和列的布局,但标题文本本身会被丢弃。本文文档中使用标题RowColumn来帮助理解布局,但如果它们可以帮助您导航源代码,您可以使用更具描述性的标题。

2.1 方向 Orientation

默认情况下,仪表盘页面首先按行布局,然后按列布局。但是,您可以通过指定 orientation: columns 文档选项来更改此设置:

---
title: "Diamonds Explorer"
format:
dashboard:
orientation: columns
---

## Column {width=60%}

```{python}
```

## Column {width=40%}

```{python}
```

```{python}
```
alt

2.2 Fill vs. Flow

仪表盘中未给出明确高度的每一行将通过填充可用空间或流动到其自然高度来确定其大小。Fill 布局通常是默认布局,但对于某些类型的内容(例如 Markdown 文本),Flow 布局是默认布局。

如果默认行为不是您想要的,您可以使用应用于行的 .fill.flow 类显式指定填充或流动行为。例如:

## Row {.fill}

## Row {.flow}

2.3 滚动 Scrolling

默认情况下,仪表盘内容填充页面中的所有可用空间。您也可以指定 scrolling: true 选项来使用其自然高度和滚动来布局内容以适应页面溢出。例如:

---
title: "Scrolling"
format:
dashboard:
scrolling: true
---

```{python}
```

```{python}
```

```{python}
```
alt

由于它具有滚动功能,因此该布局可以轻松容纳更多图表。虽然这很有用,但您也可以考虑将Pages和Tabsets(在接下来的两节中描述)作为在填充页面的布局中呈现内容的替代方法。

3 页面 Pages

上面的布局示例仅演示了单页仪表盘。要引入多个页面,请在用于定义行和列的 2 级标题之上使用 1 级标题。1 级标题的文本将用于链接到导航栏中的页面。例如,这是一个将内容拆分为两个页面的仪表盘:

---
title: "Palmer Penguins"
format: dashboard
---

# Bills

```{python}
```

# Flippers {orientation="columns" scrolling="true"}

## Column

```{python}
```

```{python}
```

## Column

```{python}
```

请注意,我们可以通过向页面标题添加一个orientation属性来设置每页的方向(此处为第二页的orientation="columns")。此外,您可以使用页面标题上的scrolling属性来控制每页滚动行为(在上面的第二页中使用scrolling="true"显示)。

4 选项卡 Tabsets

使用选项卡包含数据的多个视图或包含次要的内容,而不会使其占据主显示屏。选项卡是通过将 .tabset 类添加到行或列来创建的。例如,此布局将底行显示为一组两个选项卡。

---
title: "Palmer Penguins"
format: dashboard
---

## Row

```{python}
```

## Row {.tabset}

```{python}
#| title: Chart 2
```

```{python}
#| title: Chart 3
```
alt

您可以包含任意深度的选项卡。这里我们在顶级行的列中包含一个选项卡:

---
title: "Palmer Penguins"
format: dashboard
---

## Row {height=70%}

```{python}
```

## Row {height=30%}

### Column {.tabset}

```{python}
#| title: Chart 2
```

```{python}
#| title: Chart 3
```

### Column

```{python}
```
alt

选项卡列中的每个单元格都成为一个选项卡,我们通过向用于生成每个选项卡的单元格添加title选项来为选项卡提供导航标题。

您还可以拥有仅包含 Markdown 的选项卡。为此,请使用 ::: {.card} div 并包含选项卡的title属性:

::: {.card title="My Title"}
Card text
:::

在上面的示例中,每个选项卡都包含一张卡片。如果您希望选项卡包含多张卡片,请在选项卡行或列下方引入另一级标题。例如:

---
title: "Palmer Penguins"
format: dashboard
---

## Row {.tabset}

### Plots

```{python}
```

```{python}
```

### Data

```{python}
```

5 卡片 Cards

卡片是仪表盘中显示的基本单位。系统会自动为行和列内的单元格和 Markdown 内容创建卡片。例如,这里的每个 Python 单元都变成了卡片:

## Column {width=40%}

```{python}
```

```{python}
```

您还可以通过 .card div 创建包含任意 markdown 的卡片。例如:

## Column {width=40%}

```{python}
```

::: {.card}
This text will be displayed within a card
:::

```{python}
```

要为 Markdown 卡片提供标题,请使用 title 属性。例如:

::: {.card title="My Title"}
This text will be displayed within a card
:::

请注意,如果您在 Jupyter Notebook 中进行创作,则 Markdown 单元格会自动变为 .card div。

有关单元格及其内容如何映射到卡片的更多详细信息(例如排除单元格、具有多个输出的单元格等),请参阅Cell Output。

5.1 显示选项 Display Options

默认情况下,卡片显示时没有标题,并且边缘有少量填充。这是一张显示传单地图的卡片:

alt

您可以通过包含title单元格选项来向卡片添加标题。您还可以使用padding选项自定义内边距。例如,在这里我们添加一个标题并完全删除内边距:

```{python}
#| title: "World Map"
#| padding: 0px
from ipyleaflet import Map, basemaps, basemap_to_tiles
Map(basemap=basemap_to_tiles(basemaps.OpenStreetMap.Mapnik),
center=(48.204793, 350.121558), zoom=2)
```
alt

您可以通过打印 title= 表达式作为单元格的第一个输出来创建动态title。例如:

```{python}
from ipyleaflet import Map, basemaps, basemap_to_tiles

lat = 48
long = 350

print("title=", f"World Map at {lat}, {long}")

Map(basemap=basemap_to_tiles(basemaps.OpenStreetMap.Mapnik),
center=(lat, long), zoom=2)
```

扩展卡片

默认情况下,您可以使用右下角的 Expand 按钮放大卡片的内容:

alt

如果您不希望卡片可扩展,您可以指定 expandable: false(无论是在文档级别还是针对单个卡片)。

卡片填充行为

Quarto 会检查卡片内容,通常会选择最适合卡片内容的填充行为(默认情况下,卡片将填充其容器,但在特定情况下,例如简单的 markdown,卡片将选择 flow 布局)。您可以使用具有所需布尔值的 fill 属性显式控制卡片的填充行为。例如 fill="false" 将使卡片的高度与内容的大小匹配(不填充)。


「结束」

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

alt

本文由 mdnice 多平台发布


http://www.ppmy.cn/embedded/16465.html

相关文章

diskMirror-backEnd-spring-boot | diskMirror 后端服务器 SpringBoot 版本!

diskMirror-backEnd-spring-boot diskMirror 后端服务器的 SpringBoot 版本,此版本中拓展了 DiskMirrorBackEnd,是一个完全的SpringBoot项目! 目录 文章目录 diskMirror-backEnd-spring-boot目录我如何部署与配置docker 方式部署 diskMirro…

ctfshow web入门 SQl注入 web185--web190

web185 这道题还有另外一个脚本就是用concat的拼接达到有数字的目的 concat(truetrue) 2 concat(true) 1 concat(true, true) 11 然后上脚本(Y4tacker这个师傅的) # Author:Y4tacker import requestsurl "http://341e93e1-a1e7-446a-b7fc-75beb…

【threejs教程9】threejs加载360全景图(VR)的两种方法

目录 前言 1.Equirectangular映射背景 实现步骤 1.初始化TextureLoader 2.加载Equirectangular纹理 3.配置映射类型和颜色空间 4.应用背景 完整代码如下 2.立方体贴图背景 实现步骤 1.创建CubeTextureLoader 2.加载立方体贴图 3.应用背景 完整代码如下 …

从国内盲盒小程序看国外市场的发展机遇与挑战

近年来,盲盒小程序在国内市场迅速崛起,凭借其独特的营销模式和消费者体验,赢得了大量年轻消费者的喜爱。从国内盲盒小程序的发展中,我们可以窥见国外市场的一些发展机遇与挑战,为进军国际市场提供有益的参考。 首先&a…

深入了解Eureka:微服务架构中的服务发现与注册中心

引言 微服务架构的兴起使得应用程序变得更加模块化和可扩展。在这种架构下,服务发现与注册中心扮演着至关重要的角色。本文将深入探讨Eureka作为服务发现与注册中心的作用、优缺点、重要性以及其服务架构。 一、Eureka的作用 Eureka是Netflix开源的一款用于构建分…

MATLAB线性函数拟合并预测

线性函数拟合,由线性函数很好描述的一个数集,也就是说如果我们所考虑的数据是以y(x)的形式给出,并且其中f(x)满足: 要求得 m 和b的值,我们可以使用一个称为 polyii(x,y,n)的 MATLAB 函数,其中n是我们要 MATLAB 求出的多项式的次数…

微软ML Copilot框架释放机器学习能力

摘要:大模型席卷而来,通过大量算法模型训练推理,能根据人类输入指令产生图文,其背后是大量深度神经网络模型在做运算,这一过程称之为机器学习,本文从微软语言大模型出发,详解利用大型语言模型&a…

实现自定义SpringBoot的Starter

starter机制 Spring Boot Starter机制是Spring Boot项目中的一个重要概念,它主要用于简化Maven或Gradle等构建工具中的依赖管理。每个Starter都包含了实现特定功能所需的库和组件,以及相应的配置文件。开发者只需在项目中引入相应的Starter依赖&#xf…

HTTP 网络协议请求的消息结构,具体详解(2024-04-25)

一、简介 HTTP 是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。 HTTP 消息是客户端和服务器之间通信的基础,它们由一系列的文本行组成,遵循特定的格式和…

网络安全之防范钓鱼邮件

随着互联网的快速发展,新的网络攻击形式“网络钓鱼”呈现逐年上升的趋势,利用网络钓鱼进行欺骗的行为越来越猖獗,对互联网的安全威胁越来越大。网络钓鱼最常见的欺骗方式就是向目标群体发送钓鱼邮件,而邮件标题和内容,…

【线性代数 C++】结合逆矩阵的克拉默法则

1 原理 对于 n n n个变量、 n n n个方程的线性方程组 { a 11 x 1 a 12 x 2 ⋯ a 1 n x n b 1 a 21 x 1 a 22 x 2 ⋯ a 2 n x n b 2 ⋯ ⋯ ⋯ a n 1 x 1 a n 2 x 2 ⋯ a n n x n b n , (1) \begin{cases} a_{11}x_1a_{12}x_2\cdots a_{1n}x_nb_1 \\ a_{21}x_1a_{22}…

设计模式:迪米特法则(Law of Demeter,LoD)介绍

迪米特法则(Law of Demeter,LoD),也称为最少知识原则(Least Knowledge Principle,LKP),是面向对象设计原则之一,它强调一个对象应该对其他对象有尽可能少的了解&#xff…

汽车组装3D电子说明书更通俗易懂

激光打印机由于造价高、技术更先进,因此在使用和维护上需要更专业的手法,而对于普通客户来说并不具备专业操作激光打印机的技能,为了通俗易懂地让客户理解激光打印机,我们为企业定制了激光打印机3D产品说明书,将为您带…

unity中压缩文件与解压文件

今天研究了一下在unity中 把文件压缩后转二进制发送到服务器并从服务器下载后解压使用文件,废话不多说直接上代码,zip压缩插件是用的dotnetzip插件,网上可以搜索下载这个dll private static void GetPathMeshData_ZIP(Milling_ProjectData da…

kotlin根据文件的filePath转化为uri

方法实现 使用File类来创建一个文件对象,然后通过FileProvider来获取文件的URI import android.content.Context import android.net.Uri import androidx.core.content.FileProvider import java.io.Filefun getFileUri(context: Context, filePath: String): Ur…

Delta模拟器:iOS上的复古游戏天堂

Delta模拟器:iOS上的复古游戏天堂 在数字时代,我们有时会怀念起那些早期的电子游戏,它们简单、纯粹,带给我们无尽的乐趣。虽然现在的游戏在画质和玩法上都有了巨大的提升,但那种复古的感觉却始终无法替代。幸运的是&a…

【漏洞复现】用友政务财务系统 FileDownload 任意文件读取漏洞

0x01 产品简介 用友政务财务系统是面向政府部门、事业单位、非赢利组织的全方位业务管理信息化解决方案提供商。该系统具备一系列的功能特点,能够满足不同规模和类型企业的财务管理需求。 0x02 漏洞概述 用友政务财务系统存在任意文件读取漏洞,未授权的攻击者可以通过该漏…

算法-动态规划专题

文章目录 前言 : 动态规划简述1 . 斐波那契模型1.1 泰波那契数列1.2 最小花费爬楼梯1.3 解码方法 前言 : 动态规划简述 动态规划在当前我们的理解下,其实就是一种变相的递归,我们查看一些资料也可以知道,动态规划其实属于递归的一个分支,通过把递归问题开辟的栈帧通过一定的手…

Qt : 禁用控件默认的鼠标滚轮事件

最近在写一个模拟器,在item中添加了很多的控件,这些控件默认是支持鼠标滚动事件的。在数据量特别大的时候,及容易不小心就把数据给修改了而不自知。所有,我们这里需要禁用掉这些控件的鼠标滚轮事件。 实现的思想很简单&#xff0c…

先进制造aps专题三 为什么java语言不适合作为aps算法的开发语言

为什么java语言不适合作为aps算法的开发语言 主要两个原因 1 java的list在特定位置插入,其实是重新生成一个新list,而不像c就是指针操作 2 数据量大,运行时间长,会跑崩 所以商业aps产品,都是清一色的用c写aps算法 先进制造…