vega-lite - 在 Antora 中嵌入 Vega-Lite 图表
问题描述
我正在尝试将这个 vega-lite 图嵌入到我的 antora 文档中:https ://vega.github.io/vega-lite/examples/line_overlay.html
我的 Asciidoc 文件如下所示:
... some text ...
== Attachments
[vegalite, rendered-vega-image, svg]
----
{
"$schema": "https://vega.github.io/schema/vega-lite/v4.json",
"description": "Stock prices of 5 Tech Companies over Time.",
"data": {"url": "data/stocks.csv"},
"mark": {
"type": "line",
"point": true
},
"encoding": {
"x": {"timeUnit": "year", "field": "date"},
"y": {"aggregate":"mean", "field": "price", "type": "quantitative"},
"color": {"field": "symbol", "type": "nominal"}
}
}
----
... some more text ...
问题是找不到包含我的数据的 CSV 文件。我尝试了我想象的每条路径......相对和绝对文件系统路径以及相对和绝对 http url。我仍然总是收到这条消息:
[DONE] build ui bundle
Skipping vegalite block. No such file: http://localhost:8080/vegalite/svg/eNpVkEFywyAMRfc5BcN0mdibdpNtj9D0AAQrWA0gArKnnozvXoHbpl0Zv9F_X3DfKaWfih0hGH1UemRO5dj3MzjTOeRxOndI_TbQ6MEjQz8_dx-Fot7X_ADFZkyMAsTxxmSvKmW0UBRd1Is6gR3VK4VkIlY2Q1YnDNB95w3X8ruesq-Cu2E2dgwQuQyY1z5QRKaM0R08OVe_GRJlllNfal3pbJn12nTB5GvVyVn-eElQpR4jtDphiTCyQM4TCNliEC0NInxEP9tSLIu-S3-VLGCy3it9QfBDBbI6bLUyv7R541yWdxJ-1AFM_DffXqWSn7Vuk4mMbBjnh8iSp9xkv8GyhDP5v8lIAaPxeq032K1fIi6OZQ==
[DONE] build docs
Skipping vegalite block
不应该出现。
我用直接在 json 块中定义的数据尝试了 vega-lite。这个片段有效。所以 Vega-Lite 在一般工作中(我使用 Kroki 服务器来生成图表)。
[vegalite, rendered-vega-image, svg]
----
{
"description": "A simple bar chart with embedded data.",
"data": {
"values": [
{"a": "A","b": 28}, {"a": "B","b": 55}, {"a": "C","b": 43},
{"a": "D","b": 91}, {"a": "E","b": 81}, {"a": "F","b": 53},
{"a": "G","b": 19}, {"a": "H","b": 87}, {"a": "I","b": 52}
]
},
"mark": "bar",
"encoding": {
"x": {"field": "a", "type": "ordinal"},
"y": {"field": "b", "type": "quantitative"}
}
}
----
直接在图表定义中定义我的数据对我来说不是一个解决方案。现在我只是想用 demo-CSV 文件让它工作。但之后我将切换到我自己的自动生成的大型 CSV 文件。我的真实 CSV 和演示文件都位于docs/modules/technical-docs/assets/attachments/monitoring-logging-reporting/stocks.csv
.
我的一般设置包括几个项目。
- 包含 antora 剧本和 shell 脚本的项目,用于在我的本地主机上生成我的文档
- 包含 Asciidoc、CSV 文件和一堆其他文档和源代码的项目
- 其他几个包含与手头问题无关的 asciidoc 文档的项目。
有人有想法吗?谢谢你的帮助。
解决方案
Kroki 提供了限制对文件系统和网络上文件的访问的安全级别。每个级别都包括在之前的安全级别中启用的限制:
UNSAFE
:禁用任何安全功能。SAFE
:假设图表库安全模式请求清理就足够了。SECURE
: 防止尝试从文件系统或网络读取文件。
默认情况下,Kroki 以SECURE
模式运行。
结果,"data": {"url": "data/stocks.csv"}
将被删除/忽略。
如果您使用 Asciidoctor Kroki,预处理器应该解析路径,读取内容并替换data.url
为实际值。见:https ://github.com/Mogztter/asciidoctor-kroki
或者,由于您正在运行 Kroki 的本地实例,您可以使用KROKI_SAFE_MODE=unsafe
环境变量将安全模式配置为unsafe
.
推荐阅读
- wordpress - 如何自定义 woocommerce 密码规则,我想编写自己的密码规则
- c# - C# - NHibernate:驱逐一个实体然后得到它
- performance - neoload 中的性能测试
- android - 安卓试用版和生产版
- amazon-web-services - 组合同一服务的多个 docker 容器的指标
- r - 如何在 NavBar 页面 + Rshiny 应用程序中将表格输出渲染到 tabPanel
- api - 连接到 Wercker api 时“无法运行源代码”是什么意思?
- javascript - 在sails 中动态更改要填充和使用的连接?
- symfony - Symfony3 - 如何验证 HTML 标签
- virtual-machine - 在 VM Ware Workstation Player 中释放分配的 VM 内存