wavedrom を jupyter で使う
blog
2019-3-31 18:55 JST

波形表示にいままで mathplot をつかっていたのですがwavedrom に変更しました。wavedrom は javascript で書かれた波形などを書くためのライブラリです。

mathplot vs wavedrom

wavedrom での波形

mathplot での波形

ということで埋め込みます

ん?上の画像、、、、画像というのが変ですね。wavedrom は javascript なので埋め込み可能です。埋め込んでみましょう。

wavedrom 埋め込み

Javascript の記述

<div style="width:50vw"
<script type="WaveDrom">
{ signal: [
  { name: "clk",         wave: "P.....|..." },
  { name: "Data",        wave: "x.345x|=.x", 
    data: ["head", "body", "tail", "data"] },
  { name: "Request",     wave: "0.1..0|1.0" },
  {},
  { name: "Acknowledge", wave: "1.....|01." }
]}
</script>
</div>

nbwavedrom はちょっと古い

さて、nbwavedrom という jupyter の extension があり、一瞬使えそうな気がしますが、(ほとんど使えるのですが)標準だとエラーになってしまいます。どうやら、いまの jupyter とは相性が悪いようです。wavedrom.js 内の次のコードがエラーになります。

wavedrom.js
    // add styles
    /*
    document.head.innerHTML += 'div.wavedromMenu{position:fixed;border:solid 1pt#CCCCCC;background-color:white;box-shadow:0px 10px 20px #808080;cursor:default;margin:0px;padding:0px;}div.wavedromMenu>ul{margin:0px;padding:0px;}div.wavedromMenu>ul>li{padding:2px 10px;list-style:none;}div.wavedromMenu>ul>li:hover{background-color:#b5d5ff;}';
    */

エラー内容は次のようになります。

Javascript error adding output!
TypeError: t.head.appendChild(...).parentNode is null
See your browser Javascript console for more details.

これは上記の innerHTML を単純にけずり、そして、jupyter に持ってくることで解決します。wavedrom の js も少し古いようなので、nbwavedrom は参考程度と考え、自分のコードに直接埋め込んでいいかと思います。

リンク集