D3.jsでパーティションレイアウト
D3.jsには幾つかのレイアウト(テンプレート的な?)というものがあります。
パッと見面白いものから
- Fource:円と線をつなぐ方のグラフ、物理演算もしてくれる
- Stack:体積グラフ
- Pie:円グラフ
- Pack:丸の中に丸がある、階層構造につかわれる
など12個(2014年2月19日のところ)のレイアウトを使うことができます。それぞれのドキュメントやレイアウトを使用したサンプルも豊富にあります(英語ですが)。
レイアウトを使用しても変わらずsvgのアニメーションなどをすることができます。ドラッグしてパーティクルを振り回したり選択したデータごとに遷移する体積グラフなど、やりたいことにあったレイアウトがあれば便利だなぁーと思いました。
あと、Partitionという階層構造を表す円グラフを使って自称カレンダーのようなものをつくってみました。年には月が12個あり、年には日が約30個あり〜という階層構造としてグラフを表示します。今年も今月も残り何%しかないのか〜というのを実感しちゃいます。あ、色のついてる部分と真ん中はクリックできます。
(ソースコード→farundorL/d3Calendar · GitHub)
D3.jsで時計(2)
前回D3.jsでつくった時計のようなものに、アニメーションを追加してみました。
D3.jsのdata()を使うことでデータ(ここでは日付や時間など)とSVGの要素を結合することができます。とても適当な説明ですが、自分の場合は3つの小円という解説をみてイメージをつかみました。
結合することで、データにない要素があれば要素を削除(remove)、データにしかなければ要素を追加(append)することができます。
要素を追加するときに.transition()(遷移、変化的な).attr("width", 10)(横幅の値を定める)とすると、ブロックがにゅっと追加されるようになります。
複数のパラメータを同時に遷移することもできるので、要素を削除するときにx,y,widthを変更し、秒ならば分、分なら時間、時間なら日のブロックに吸い込まれるようなアニメーションをつくることができます。
ちなみに追加や削除する以外のときも、要素の移動や変形をすることはできます。
それとD3.jsはSVGだけでなくdivやspanなどの要素も扱うことができます。
データを可視化した〜などのサンプルもbl.ocks.org - mbostockあたりに沢山あるので見てみると楽しめるとおもいます。
D3.jsで時計(1)
D3.jsをちょっと触ることがあったので、書き初めがてら簡単な時計をつくってみました
(iframeって便利)
時間毎にsvgの色を変えるだけなのでD3.js使う必要あるのかなと…
ここからいろいろ変えていく所存です
Windows8で、ユーザ/Picturesにあるファイルを扱ったときのメモ
だらけきった夏休みの最後にWindowsRTアプリ?を作ろうとした。
asyncとかawaitとか初めて見てビビったり、MessageBoxがMessageDialogになってるーとか思いつつ英語のリファレンスを読みながらやった。
最初は今まで通り.Netで作れると思ってたが、そういえばWindowsRTアプリは.NetでなくWinRT APIだったことを思い出して挫けかけてた。
ちょっと躓いて英語を読んだところを3つメモ
ピクチャにある写真を月ごとにグループ分けする
// class.Windows.Storage.KnownFolders.PictureLibrary でピクチャのフォルダ内を参照できる StorageFolder picFolder = KnownFolders.PicturesLibrary; // 写真の保存された月ごとにファイルをわける // ピクチャ内のいろんなフォルダに位置していてもわけてくれる StorageFolderQueryResult picResult = picFolder.CreateFolderQuery(CommonFolderQuery.GroupByMonth); // あとはForeachで月わけにした写真を扱った
取得するファイルをフィルタリングする
// オプションを設定し、クエリを実行するときの引数として与える QueryOptions option = new QueryOptions(CommonFolderQuery.GroupByMonth); option.FileTypeFilter.Add(".jpg"); option.FileTypeFilter.Add(".png"); option.FileTypeFilter.Add(".gif"); option.FileTypeFilter.Add(".bmp"); StorageFolder picFolder = KnownFolders.PicturesLibrary; StorageFolderQueryResult picResult = picFolder.CreateFolderQueryWithOptions(option); IReadOnlyList<StorageFolder> picList = await picResult.GetFoldersAsync();
アプリ以下に位置してない画像を表示する
// アプリ以下に位置してない画像ファイル StorageFile localFile; BitmapImage image = new BitmapImage(); // 読み込みのみで開く using (var stream = (FileRandomAccessStream)await localfile.OpenAsync(FileAccessMode.Read)) { // ImageSourceとして渡したりした image.SetSource(stream); }
Twitterから桜の開花情報を集めようとしてみた
「Twitterでお花見をもっと楽しく #桜2012」
Url : http://blog.jp.twitter.com/2012/03/twitter-2012.html
公式Twitterを使っているとこの広告が目に入った。
#桜2012+地域別ハッシュタグをつけて呟いてお花見情報を共有/発信しようというもの、このような呟きをほぼ手動で取得してみた。
最初はこれを使って開花予想でもできたらいいなと思いつつ、5月になってしまった…
ということで、4月1~30日の各地域での呟きをGoogleChartで可視化してみた。
ハッシュタグで検索して地域名(公式で書かれているもののみ)が呟きに含まれているものをカウントした。
なにか感想や指摘、ここはこうした方がいいんじゃない?等あればどんどん言ってください。