1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DatabricksノートブックにおけるHTML、D3、SVGの活用

Last updated at Posted at 2021-12-25

HTML, D3, and SVG in notebooks | Databricks on AWS [2021/6/11時点]の翻訳、および、サンプルPythonノートブックを説明したものです。

Databricksクイックスタートガイドのコンテンツです。

本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。

本書では、どのようにHTML、SVG、D3ビジュアライゼーションをPython、Scalaノートブックで表示するのかを説明します。

D3をレンダリングするカスタムJavascriptライブラリを使用したいのであれば、Use a Javascript libraryを参照ください。

Javascript、D3のようなHTMLコードやSVGを参照するにはdisplayHTMLメソッドを使用します。

注意:

  • コンテンツと出力を含むノートブックセルの最大サイズは16MBです。displayHTML関数に引き渡すHTMLのサイズがこの値を超えないようにしてください。
  • 外部リソースにリンクする場合にはhttp://ではなくhttps://を使用してください。さもないと、混成コンテンツエラーのため、画像、グラフィック、Javascriptが適切にレンダリングされない場合があります。

HTML、D3、SVGのPythonノートブック

HTMLの表示

displayHTMLにHTML文字列を渡してセルを実行することで、アウトプットでHTMLがレンダリングされます。

Python
displayHTML("<h3>ノートブックでHTMLコードを参照できます。</h3>")

Screen Shot 2021-12-25 at 15.59.12.png

SVGビジュアルの表示

Python
displayHTML("""<svg width="100" height="100">
   <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
   お使いのブラウザはインラインSVGをサポートしていません。
</svg>""")

Screen Shot 2021-12-25 at 16.00.14.png

displayHTMLによるD3ビジュアライゼーションの表示

注意: D3ビジュアライゼーションのHTMLコードの一部をRDDからプログラムすることが可能です。

D3の詳細に関しては http://d3js.org/ を参照ください。

RDDを準備します。

Python
# D3ビジュアライゼーションを変更するためにお好きな色に変更してください
colorsRDD = sc.parallelize([(197,27,125), (222,119,174), (241,182,218), (253,244,239), (247,247,247), (230,245,208), (184,225,134), (127,188,65), (77,146,33)])
colors = colorsRDD.collect()

d3にRDDを引き渡してレンダリングします。

Python
htmlCode = """
<!DOCTYPE html>
<meta charset="utf-8">
<style>

path {{
  fill: yellow;
  stroke: #000;
}}

circle {{
  fill: #fff;
  stroke: #000;
  pointer-events: none;
}}

.PiYG .q0-9{{fill:rgb{colorArray[0]}}}
.PiYG .q1-9{{fill:rgb{colorArray[1]}}}
.PiYG .q2-9{{fill:rgb{colorArray[2]}}}
.PiYG .q3-9{{fill:rgb{colorArray[3]}}}
.PiYG .q4-9{{fill:rgb{colorArray[4]}}}
.PiYG .q5-9{{fill:rgb{colorArray[5]}}}
.PiYG .q6-9{{fill:rgb{colorArray[6]}}}
.PiYG .q7-9{{fill:rgb{colorArray[7]}}}
.PiYG .q8-9{{fill:rgb{colorArray[7]}}}

</style>
<body>
<script src="https://d3js.org/d3.v3.min.js"></script>
<script>

width = 960, height = 500;

vertices = d3.range(100).map(function(d) {{
  return [Math.random() * width, Math.random() * height];
}});

svg = d3.select("body").append("svg")
    .attr("width", width)
    .attr("height", height)
    .attr("class", "PiYG")
    .on("mousemove", function() {{ vertices[0] = d3.mouse(this); redraw(); }});

path = svg.append("g").selectAll("path");

svg.selectAll("circle")
    .data(vertices.slice(1))
  .enter().append("circle")
    .attr("transform", function(d) {{ return "translate(" + d + ")"; }})
    .attr("r", 2);

redraw();

function redraw() {{
  path = path.data(d3.geom.delaunay(vertices).map(function(d) {{ return "M" + d.join("L") + "Z"; }}), String);
  path.exit().remove();
  path.enter().append("path").attr("class", function(d, i) {{ return "q" + (i % 9) + "-9"; }}).attr("d", String);
}}

</script>
 """.format(colorArray = colors)
displayHTML (htmlCode)

Screen Shot 2021-12-25 at 16.02.03.png

HTML、D3、SVGのScalaノートブック

Databricks 無料トライアル

Databricks 無料トライアル

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?