R中的r2d3:如何在同一行上并排显示两个图表?
P粉543344381
P粉543344381 2023-09-03 16:23:03
[HTML讨论组]
<p>使用r2d3包,我可以在RMarkdown中渲染一个简单的d3.js图表,像这样:</p> <p><strong>barchart.js</strong>:</p> <pre class="brush:php;toolbar:false;">// !preview r2d3 data=c(0.3, 0.6, 0.8, 0.95, 0.40, 0.20) var barHeight = Math.floor(height / data.length); svg .selectAll(&quot;rect&quot;) .data(data) .enter() .append(&quot;rect&quot;) .attr(&quot;width&quot;, function (d) { return d * width; }) .attr(&quot;height&quot;, barHeight) .attr(&quot;y&quot;, function (d, i) { return i * barHeight; }) .attr(&quot;fill&quot;, &quot;steelblue&quot;);</pre> <p><strong>RMarkdown</strong>:</p> <pre class="brush:php;toolbar:false;">{r out.width='100%', fig.height=4} library(r2d3) r2d3(data=c(0.3, 0.6, 0.8, 0.95, 0.40, 0.20), script = &quot;barchart.js&quot;)</pre> <p>但是,假设我想要在RMarkdown中同时绘制相同的图表(即两个图表并排)。有办法做到这一点吗?使用简单的RMarkdown很容易,因为你可以保存图形然后在网格中排列。但是r2d3有办法做到这一点吗?它不会将每个图形保存为可以在网格中排列的对象。</p>
P粉543344381
P粉543344381

全部回复(1)
P粉786432579

我猜有多种方法可以做到这一点。一种选择是使用在crosstalk包中实现的Bootstrap Columns:

library(r2d3)
library(crosstalk)

crosstalk::bscols(
  widths = c(6, 6),
   r2d3(data=c(0.3, 0.6, 0.8, 0.95, 0.40, 0.20), script = "barchart.js", 
        width = 300, height = 200),
   r2d3(data=c(0.3, 0.6, 0.8, 0.95, 0.40, 0.20), script = "barchart.js", 
        width = 300, height = 200)
)

顺便说一句 - bscols对于安排任何交互式的html小部件也非常有用,并且可以解决大多数情况下无法轻松安排“正常”Rmd输出的问题。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号