html - rmarkdown html图中的缩放功能
问题描述
有没有办法,就像在这个 SO question here中一样,向使用 rmarkdown 创建的 html_documents 添加缩放功能?我在 Rstudio 工作。我尝试了以下方法,但当然,它不起作用:
---
title: Zoom in on Plots
author: "MS"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<style>
.zoomDiv {
opacity: 0;
position:absolute;
top: 50%;
left: 50%;
z-index: 50;
transform: translate(-50%, -50%);
box-shadow: 0px 0px 50px #888888;
max-height:100%;
overflow: scroll;
}
.zoomImg {
width: 100%;
}
</style>
<script type="text/javascript">
$(document).ready(function() {
$('slides').prepend("<div class=\"zoomDiv\"><img src=\"\" class=\"zoomImg\"></div>");
// onClick function for all plots (img's)
$('img:not(.zoomImg)').click(function() {
$('.zoomImg').attr('src', $(this).attr('src'));
$('.zoomDiv').css({opacity: '1', width: '60%'});
});
// onClick function for zoomImg
$('img.zoomImg').click(function() {
$('.zoomDiv').css({opacity: '0', width: '0%'});
});
});
</script>
## First Slide
```{r fig.align='left', out.width = "100px", dpi=300, fig.cap="tiny"}
plot(mtcars$cyl, main = "Plot 1")
```
```{r fig.align='left', out.width = "100px", dpi=300, fig.cap="tiny"}
plot(mtcars$mpg, main = "Plot 2")
```
我对 R-Markdown 很陌生,而且我不知道 html 和 JS,所以这对我来说很难。
解决方案
解决了 Martin 的解决方案,稍加改动(在视口中将元素居中 - 浏览器窗口)。
# Insert this two chunks after YAML
```{css zoom-lib-src, echo = FALSE}
script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"
```
```{js zoom-jquery, echo = FALSE}
$(document).ready(function() {
$('body').prepend('<div class=\"zoomDiv\"><img src=\"\" class=\"zoomImg\"></div>');
// onClick function for all plots (img's)
$('img:not(.zoomImg)').click(function() {
$('.zoomImg').attr('src', $(this).attr('src')).css({width: '100%'});
$('.zoomDiv').css({opacity: '1', width: 'auto', border: '1px solid white', borderRadius: '5px', position: 'fixed', top: '50%', left: '50%', marginRight: '-50%', transform: 'translate(-50%, -50%)', boxShadow: '0px 0px 50px #888888', zIndex: '50', overflow: 'auto', maxHeight: '100%'});
});
// onClick function for zoomImg
$('img.zoomImg').click(function() {
$('.zoomDiv').css({opacity: '0', width: '0%'});
});
});
```
点击Knit按钮后,将生成一个文档(您可能需要单击在浏览器中打开以生成 JavaScript)。
输出(点击图表放大/缩小):
推荐阅读
- autodesk-forge - 尝试复制文件时出错
- android - 当按下设备上的“物理”后退按钮时,在片段中调用反向 MotionLayout 动画
- node.js - 初始化前无法访问“应用程序”[VS code javascript webdev]
- robotframework - 如何将机器人自定义库名称作为关键字参数?
- google-apps-script - 多次运行 Google Apps 脚本时,Google 会形成重复部分
- node.js - Vue CLI SOCKET_TIMEOUT 创建新项目时出错(npm 错误)
- terraform - 减少 Terragrunt 控制台输出
- python - 在 Pandas 中更改数据框列 dtypes
- applescript - 在苹果脚本中将一个整数乘以另一个整数一定次数
- hazelcast - 循环访问从 Hazelcast 的 ClientConfig 实例创建的 mapConfig 时出现 UnsupportedOperationException