Click here to enter
最近名前を聞くことが多くなってきたD3.jsを試してみています。 まだ使い始めたばかりですが、D3.jsの設計の素晴らしさに感動しています。 データを与えればグラフが表示されるというような単純なものではないので、敷居が高く感じていましたが、設計を知るほどによく出来ていて驚きます。 D3.jsとは何か? そもそも、D3.jsとはなんでしょう? D3.js – Data-Driven Documents D3.jsは、データをブラウザで可視化するためのライブラリです。 単なるグラフライブラリではなく、もっと抽象的な「可視化」を扱うのが特徴です。 抽象的なレイヤーを扱うので、ライブラリと言っても機能より設計が重要で、D3.jsが支持されている理由はその設計の素晴らしさにあります。実際に描画しながら、その設計の違いについて考えていきます。 企業の時価総額と営業利益の関係をプロット 例題として、企業
var w = 960; var h = 500; //svg要素設置 var svg = d3.select("#chart") .append("svg:svg") .attr("width", w) .attr("height", h); //データセット作成 var dataSet = d3.range(200).map(function(d) { return {x:Math.random() * 1000, y:Math.random() * 1000}; }); //スケール初期化 var xScale = d3.scale.linear().domain([0, 1000]).range([0, w]); var yScale = d3.scale.linear().domain([0, 1000]).range([0, h]); //brash初期化 var brush
最近D3.jsをかなりいじってみました。APIをあれこれ調べ、すこし複雑なチャートを構築した後、長い間D3を誤解していたことに気づきました。それは私だけではありません。友達と話してみると、彼らもD3について勘違いをしています。そこで、よくある誤解のいくつかをはっきりとさせるために、この記事を書く事にしました。 D3はチャート・ライブラリではありません D3のホームページに行くと、たくさんの素晴らしいチャートとビジュアライゼーションを見ることができます。しかし、D3は、 Highcharts や Chart.js あるいは Google Charts のようなチャート・ライブラリではありません。ただ単に、データセットを受け渡すことや、必要なチャートのタイプ指定、凝ったチャートを入手することはできません。D3はそれよりもずっと低レベルなのです。D3上に構築されたチャート・ライブラリでは、たとえ
Fabric.jsは、canvasを操作するためのJavascriptライブラリです。 同様のライブラリは多数ありますがFabricの特徴は、内部にSVGパーサーを持ちsvgからcanvasへのインポートおよびcanvasからsvgへのエクスポートを行う機能があります。 //canvas要素の取得 var canvas = new fabric.Canvas('canvas'); canvas.setWidth(300); canvas.setHeight(300); //SVG要素取得 var SVGstring = document.getElementById('wrapSVG').innerHTML; //SVGをcanvasへ転写 fabric.loadSVGFromString(SVGstring , function(objects, options) { options.t
D3.js は「ビジュアライズ用のライブラリー」だと紹介されがちなんだけども、意外にも D3.js にはグラフを描画する機能がない。 D3.js のトップページには次のように書いてある。 D3.js はデータからドキュメントを生成するためのライブラリーです。D3 は HTML, SVG, CSS を使ってデータに命を吹き込みます。Web 標準を重要視しているので、独占的なフレームワークに縛られません。強力なビジュアライズ用のコンポーネントと data-driven な DOM 操作手順を組み合わすことで、モダン ブラウザーの能力を最大限に活用できます。 D3.js is a JavaScript library for manipulating documents based on data. D3 helps you bring data to life using HTML, SVG
2014/10/14 追記 本書87ページに「母数」という単語が複数回出てきますが、 これは全て「分母」とすべきでした。*1 通常、統計学の文脈では、母数は各確率分布を特徴付ける変数を指す単語であり、 例えば正規分布は平均と分散という二つの母数によって形状が決定されます。 決して母数と分母(あるいは全数)と誤解してはなりません。 しかし母数と分母を混同することは本当によくあることで、 本書はこのような頻出する誤解を訂正し、 皆様が統計を用いる際の失敗を一つでも減らす という目的で執筆に至ったにも拘らず、 まさか本書でこのような重大な失敗をしてしまったことに対し 心からお詫び申し上げ訂正させて頂きます。 なお、問題個所の記述は共著者の森藤氏ではなく 私が記述したものであり、全責任は私にあります。 本を書くに当たり、誤字脱字や言い回しの不備は出来る限り無くすべきですが、 人間であるためミスをす
先日公開した D3.jsをつかってData-Drivenにリッチなグラフやチャートを作成しよう の記事ではD3.jsをつかってグラフを作成しました。本記事ではD3.jsで作成したSVG形式のグラフをPNG形式の画像として保存する方法をご紹介します。 D3.jsにはCSVやJSONなど 様々なデータ形式を扱う為の便利なメソッド が用意されており、アプリケーションへの組み込みが容易です。しかしアプリケーションへの組み込みとなると、「X月X日の状態のグラフを保存しておきたい」、「グラフを資料に添付したい」といった要望も出てくるのではないでしょうか。 単純に画面のスクリーンショットを取得する以外では Phantom.js を利用してキャプチャを取得する方法や Apache Batik を利用してSVGを変換する方法などが考えられましたが、クライアントサイドだけで完結しない上、実装が少々手間です。
スマホやタブレットで写真を表示していると、ピンチでズームしたり、ドラッグで移動したりができて便利なので、あれを Web 上で実現してみたくなった。 最近のブラウザーでは touchstart や touchmove イベントでタッチ情報を取れたり、イベントの touches でマルチタッチを扱えたりするので、実現するための基盤はそろっている。 適当なライブラリーがあるかと思って探してみたが、意外と苦労してしまった。 Hammer.js が使えない タッチを扱うためのライブラリーとしては Hammer.js がメジャーらしい。スワイプ・ピンチ・ドラッグなど、各種イベントにも対応していて、これを使えば一発解決してくれそうだ。 ところが、画像ビューワーを作るには不向きだった。困ったのは次の 2 点。 ピンチやドラッグは個別には動くが、組み合わせたときに「表示位置」と「倍率」の関係を自前で計算する
Introduction Factsheet A fully featured graph library written in pure JS Permissive open source license (MIT) for the core Cytoscape.js library and all first-party extensions Used in commercial projects and open-source projects in production Designed for users first, for both frontfacing app usecases and developer usecases Highly optimised No external dependencies Compatible with All modern browse
digraph testgraph{ {node[shape=none, fontsize=23] "Welcome to Liviz.js!" } {node[shape=none] "Interactive GraphViz on your browser" } {edge[color=transparent] "Welcome to Liviz.js!" -> "Interactive GraphViz on your browser" } A -> B -> C -> D -> E; B -> D; {node[shape=box]; 1 -> 2 -> 3; } E -> 1;2 -> C; {rank=same; 1; A;} {rank=same; 3; D;} } Test
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く