Rumah  >  Soal Jawab  >  teks badan

r2d3 dalam R: Bagaimana untuk memaparkan dua plot bersebelahan pada baris yang sama?

<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粉543344381P粉543344381412 hari yang lalu611

membalas semua(1)saya akan balas

  • P粉786432579

    P粉7864325792023-09-04 14:21:52

    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.

    balas
    0
  • Batalbalas