R中的r2d3:如何在同一行上並排顯示兩個圖表?
P粉543344381
P粉543344381 2023-09-03 16:23:03
0
1
660
<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("rect") .data(data) .enter() .append("rect") .attr("width", function (d) { return d * width; }) .attr("height", barHeight) .attr("y", function (d, i) { return i * barHeight; }) .attr("fill", "steelblue");</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 = "barchart.js")</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輸出的問題。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板