r2d3 dalam R: Bagaimana untuk memaparkan dua plot bersebelahan pada baris yang sama?
P粉543344381
P粉543344381 2023-09-03 16:23:03
0
1
652
<p>Menggunakan pakej r2d3, saya boleh memaparkan carta d3.js mudah dalam RMarkdown seperti ini: </p> <p><strong>barchart.js</strong>:</p> <pre class="brush:php;toolbar:false;">// !pratonton r2d3 data=c(0.3, 0.6, 0.8, 0.95, 0.40, 0.20) var barHeight = Math.floor(height / data.length); svg .selectAll("betul") .data(data) .enter() .append("betul") .attr("lebar", fungsi (d) { pulangkan d * lebar; }) .attr("tinggi", barHeight) .attr("y", fungsi (d, i) { kembali i * barHeight; }) .attr("isi", "biru keluli");</pre> <p><strong>RMarkdown</strong>: </p> <pre class="brush:php;toolbar:false;">{r out.width='100%', fig.height=4} perpustakaan(r2d3) r2d3(data=c(0.3, 0.6, 0.8, 0.95, 0.40, 0.20), skrip = "barchart.js")</pre> <p>Walau bagaimanapun, katakan saya mahu melukis carta yang sama secara serentak dalam RMarkdown (iaitu dua carta sebelah menyebelah). Adakah terdapat cara untuk melakukan ini? Menggunakan RMarkdown mudah adalah mudah kerana anda boleh menyimpan grafik dan kemudian menyusunnya dalam grid. Tetapi adakah terdapat cara untuk r2d3 melakukan ini? Ia tidak menyimpan setiap lukisan sebagai objek yang boleh disusun dalam grid. </p>
P粉543344381
P粉543344381

membalas semua(1)
P粉786432579

Saya rasa terdapat pelbagai cara untuk melakukan ini. Satu pilihan ialah menggunakan Bootstrap Columns yang dilaksanakan dalam pakej crosstalk:

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)
)

BTW - bscols juga sangat berguna untuk menjadualkan mana-mana widget html interaktif, dan boleh menyelesaikan kebanyakan kes di mana output Rmd "biasa" tidak boleh dijadualkan dengan mudah.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan