Submit Search
Upload
細かすぎて伝わらないD3 ver.4の話
•
17 likes
•
15,299 views
清水 正行
Follow
※ なぜか、スライド内の画像が天地逆転して表示されています。 D3.js ver.4の新機能などについて。
Read less
Read more
Report
Share
Report
Share
1 of 65
Download now
Download to read offline
Recommended
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
NTT Tech Conference #2 にて話した資料 時間が足りなかったので全部は話せなかった。
nginxの紹介
nginxの紹介
Takashi Takizawa
第10回静岡ITPro勉強会インフラ部 「nginxの紹介」資料
目grep入門 +解説
目grep入門 +解説
murachue
目grep入門があまりにもKernelVM::入門だという指摘があったため、解説をつけてよりstd::入門に近づけてみました。
暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
九州大学談話会「IMI Colloquium」 https://www.imi.kyushu-u.ac.jp/seminars/view/3001
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
Proof Summit 2015 <http: /> で発表した、SAT/SMTソルバの仕組みです。 Proofということで、論理学的側面からの面白さを出来るだけ紹介しています。
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
Yuki Morishita
4/28 Cassandra勉強会資料
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
東海道らぐ 2017.10.7 名古屋オフ https://tokaidolug.connpass.com/event/67522/ での発表内容より
「DNS浸透いうな」と言うけれど… (#ssmjp 2018/07)
「DNS浸透いうな」と言うけれど… (#ssmjp 2018/07)
Yoshikazu GOTO
そういえば、どこに「浸透」するのだろう? そんなことを、技術的目線から一つ一つ再確認してみました。 OSC2018 Tokyo/Spring で話した内容をアップデートしています。
Recommended
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
NTT Tech Conference #2 にて話した資料 時間が足りなかったので全部は話せなかった。
nginxの紹介
nginxの紹介
Takashi Takizawa
第10回静岡ITPro勉強会インフラ部 「nginxの紹介」資料
目grep入門 +解説
目grep入門 +解説
murachue
目grep入門があまりにもKernelVM::入門だという指摘があったため、解説をつけてよりstd::入門に近づけてみました。
暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
九州大学談話会「IMI Colloquium」 https://www.imi.kyushu-u.ac.jp/seminars/view/3001
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
Proof Summit 2015 <http: /> で発表した、SAT/SMTソルバの仕組みです。 Proofということで、論理学的側面からの面白さを出来るだけ紹介しています。
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
Yuki Morishita
4/28 Cassandra勉強会資料
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
東海道らぐ 2017.10.7 名古屋オフ https://tokaidolug.connpass.com/event/67522/ での発表内容より
「DNS浸透いうな」と言うけれど… (#ssmjp 2018/07)
「DNS浸透いうな」と言うけれど… (#ssmjp 2018/07)
Yoshikazu GOTO
そういえば、どこに「浸透」するのだろう? そんなことを、技術的目線から一つ一つ再確認してみました。 OSC2018 Tokyo/Spring で話した内容をアップデートしています。
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
セキュリティ・ミニキャンプ in 北海道 2015
gRPC入門
gRPC入門
Kenjiro Kubota
4/18 社内勉強会
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
T. Suwa
第24回プログラミングおよびプログラミング言語ワークショップ(PPL 2022, https://jssst-ppl.org/workshop/2022/index.html )にて招待講演として発表させて頂いた際のスライドです. 以下のページでも閲覧可能です: https://gfngfn.github.io/ja/posts/2022-05-11-slides-ppl2022-invited/
MongoDBの監視
MongoDBの監視
Tetsutaro Watanabe
・MongoDBで何を監視すべきか ・MongoDBのコマンド・メソッドによる監視 ・運用監視ツールとの連携して監視 ・MMS(MongoDB Monitoring Service)で監視
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
貴仁 大和屋
Tech Festa 2017で登壇した「Prometheus入門から運用まで徹底解説」のスライドです
Go mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろう
Takuya Ueda
Golang 勉強会 in Kagawa で発表した資料です。 http://gdgshikoku.connpass.com/event/26262/
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
Yuta Shimada
CloudNative Days Spring 2021 ONLINE の登壇スライドになります 2021/3/12 17:55~18:15 Track-A
Go入門
Go入門
Takuya Ueda
Goに関する資料をまとめたものです。
Django REST Framework における API 実装プラクティス | PyCon JP 2018
Django REST Framework における API 実装プラクティス | PyCon JP 2018
Masashi Shibata
Django REST Framework におけるAPI 実装プラクティス at PyCon JP 2018
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
2017/05/26のDB比較セミナーで使用した資料です。 NoSQLであるRedisについて説明しています。
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
Shota Shinogi
SNSのアカウントを見つけてくれるツール「Blackbird」のレビュースライドです。
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Takahiko Ito
Elasticsearch の検索精度のチューニング
これがCassandra
これがCassandra
Takehiro Torigaki
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
オープンソースカンファレンス 2019 Tokyo/Spring 発表資料 #osc19tk https://www.ospn.jp/osc2019-spring/ 2019年2月22日(金)
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
2022-03-05 YAPC::Japan::Online 2022
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
Golang勉強会 in Kagawa http://gdgshikoku.connpass.com/event/26262/
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
2021年にインフィニットループ社内の新卒向け研修で使われた資料です。
Java8でRDBMS作ったよ
Java8でRDBMS作ったよ
なおき きしだ
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
YugabyteDBを使ってみよう (NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料) 2022年11月22日(火) NTTデータ 技術開発本部 先進コンピューティング技術センタ 笠原 辰仁
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
Takuya Ueda
会津大のGo勉強会で使用した資料です。
インフォグラフィックス時代のD3.js入門
インフォグラフィックス時代のD3.js入門
貴寛 益子
2013年1月5日(土)CSS Nite in SAPPORO, Vol.8 with 札幌IT飲み会 「新春ライトニングトーク大会」で話した内容です。
WordPress 3.6 世告げの姫と新機能
WordPress 3.6 世告げの姫と新機能
Odyssey Eightbit
More Related Content
What's hot
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
セキュリティ・ミニキャンプ in 北海道 2015
gRPC入門
gRPC入門
Kenjiro Kubota
4/18 社内勉強会
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
T. Suwa
第24回プログラミングおよびプログラミング言語ワークショップ(PPL 2022, https://jssst-ppl.org/workshop/2022/index.html )にて招待講演として発表させて頂いた際のスライドです. 以下のページでも閲覧可能です: https://gfngfn.github.io/ja/posts/2022-05-11-slides-ppl2022-invited/
MongoDBの監視
MongoDBの監視
Tetsutaro Watanabe
・MongoDBで何を監視すべきか ・MongoDBのコマンド・メソッドによる監視 ・運用監視ツールとの連携して監視 ・MMS(MongoDB Monitoring Service)で監視
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
貴仁 大和屋
Tech Festa 2017で登壇した「Prometheus入門から運用まで徹底解説」のスライドです
Go mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろう
Takuya Ueda
Golang 勉強会 in Kagawa で発表した資料です。 http://gdgshikoku.connpass.com/event/26262/
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
Yuta Shimada
CloudNative Days Spring 2021 ONLINE の登壇スライドになります 2021/3/12 17:55~18:15 Track-A
Go入門
Go入門
Takuya Ueda
Goに関する資料をまとめたものです。
Django REST Framework における API 実装プラクティス | PyCon JP 2018
Django REST Framework における API 実装プラクティス | PyCon JP 2018
Masashi Shibata
Django REST Framework におけるAPI 実装プラクティス at PyCon JP 2018
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
2017/05/26のDB比較セミナーで使用した資料です。 NoSQLであるRedisについて説明しています。
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
Shota Shinogi
SNSのアカウントを見つけてくれるツール「Blackbird」のレビュースライドです。
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Takahiko Ito
Elasticsearch の検索精度のチューニング
これがCassandra
これがCassandra
Takehiro Torigaki
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
オープンソースカンファレンス 2019 Tokyo/Spring 発表資料 #osc19tk https://www.ospn.jp/osc2019-spring/ 2019年2月22日(金)
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
2022-03-05 YAPC::Japan::Online 2022
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
Golang勉強会 in Kagawa http://gdgshikoku.connpass.com/event/26262/
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
2021年にインフィニットループ社内の新卒向け研修で使われた資料です。
Java8でRDBMS作ったよ
Java8でRDBMS作ったよ
なおき きしだ
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
YugabyteDBを使ってみよう (NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料) 2022年11月22日(火) NTTデータ 技術開発本部 先進コンピューティング技術センタ 笠原 辰仁
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
Takuya Ueda
会津大のGo勉強会で使用した資料です。
What's hot
(20)
TLS, HTTP/2演習
TLS, HTTP/2演習
gRPC入門
gRPC入門
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
MongoDBの監視
MongoDBの監視
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
Go mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろう
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
Go入門
Go入門
Django REST Framework における API 実装プラクティス | PyCon JP 2018
Django REST Framework における API 実装プラクティス | PyCon JP 2018
Redisの特徴と活用方法について
Redisの特徴と活用方法について
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
これがCassandra
これがCassandra
Docker Compose 徹底解説
Docker Compose 徹底解説
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Java8でRDBMS作ったよ
Java8でRDBMS作ったよ
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
Similar to 細かすぎて伝わらないD3 ver.4の話
インフォグラフィックス時代のD3.js入門
インフォグラフィックス時代のD3.js入門
貴寛 益子
2013年1月5日(土)CSS Nite in SAPPORO, Vol.8 with 札幌IT飲み会 「新春ライトニングトーク大会」で話した内容です。
WordPress 3.6 世告げの姫と新機能
WordPress 3.6 世告げの姫と新機能
Odyssey Eightbit
Azure DevOpsで技術同人誌作成
Azure DevOpsで技術同人誌作成
裕之 木下
Azure DevOpsとRe:VIEWを使って効率よく技術同人誌を作成する方法について説明します。
Nseg第32回勉強会
Nseg第32回勉強会
ko ty
TypeScriptについてお話しました。
IoT キットハンズオン解説 (Azure ML Studio 編) Part1 共通手順
IoT キットハンズオン解説 (Azure ML Studio 編) Part1 共通手順
Yoshitaka Seo
Techfair 2017年3月 (2017年3月4日開催) セッション資料 Docs.com サービス停止のため、資料を引っ越しました。 Slideshare 公開時点では古い内容を含んでいることがありますが、記録・参考として公開します。
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
Yusuke Yamada
VS Code Meetup #14 - 拡張機能作る、作った編 で発表した初めての拡張機能を作る際に行った工程をまとめた資料です。
熊本クラウド語ろう会 - Azure開発入門
熊本クラウド語ろう会 - Azure開発入門
Daiyu Hatakeyama
Azureを使ったアプリケーション開発のはじめの一歩です。.NET / Java / PHP と SQL Database について取り上げます。
Ignite update databricks_stream_analytics
Ignite update databricks_stream_analytics
Ryoma Nagata
JSSUG:https://sqlserver.connpass.com/event/190637/ でのセッション資料
WordPressの進化とWordPress名古屋コミュニティの進化
WordPressの進化とWordPress名古屋コミュニティの進化
takashi ono
WordFes Nagoya 2016のスライド
Docker on azure!進化していくcontainerを覗いてみよう!
Docker on azure!進化していくcontainerを覗いてみよう!
Tsukasa Kato
JAZUG福岡(ふくあず) de:code 2017 振り返り会 2017/06/22
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
Shuji Watanabe
JJUG CCC 2014 Soringで行ったユニットテストハンズオンでの資料です。
WordPress名古屋コミュニティの進化[WordBench Nagoya 2017年3月勉強会]
WordPress名古屋コミュニティの進化[WordBench Nagoya 2017年3月勉強会]
takashi ono
WordPressの名古屋コミュニティの6年間の歩みについて紹介しました。 WordFes2016のプレゼンの再演。
Flutter Meetup Tokyo (#18) _ Osaka (#10).pdf
Flutter Meetup Tokyo (#18) _ Osaka (#10).pdf
TylerShukert
2023年2月15日のFlutter Meetup Tokyo OsakaでのFlutterとSupabaseでRDBを使ったサーバーレスアプリ開発に関してお話しさせていただいた際のスライドです。
Ignite 2021秋 recap - 開発者向け新機能紹介
Ignite 2021秋 recap - 開発者向け新機能紹介
Kazushi Kamegawa
Ignite 2021秋で発表された開発者向け新機能を紹介したスライドです。
Rancherでwindows server上のコンテナを管理できるか
Rancherでwindows server上のコンテナを管理できるか
Takashi Kanai
Windows Server 2016で利用可能なWindows ServerコンテナーとHyper-Vコンテナーの違いを解説し、Rancherを使ってそれらのコンテナを実際に管理する方法を紹介。
くまあず Nchikita 140628-2
くまあず Nchikita 140628-2
wintechq
Japan Azure User Group くまあず
FlutterとSupabaseでRDBを使った サーバーレスアプリ開発
FlutterとSupabaseでRDBを使った サーバーレスアプリ開発
TylerShukert
第三回FlutterGakkaiでのSupabaseとFlutterに関してのお話で使ったスライドです。 https://supabase.com/
昨今のpaas事情
昨今のpaas事情
裕之 木下
昨今のOpenPaasについて話しました
180421第8回関西DB勉強会- たまにはpgAdmin4も使ってみよう
180421第8回関西DB勉強会- たまにはpgAdmin4も使ってみよう
Michio Kataoka
2018.04.21に開催された第8回関西DB勉強会 - たまにはpgAdmin4も使ってみよう! - の資料です
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
Yuta Matsumura
https://fukuten.connpass.com/event/63612/
Similar to 細かすぎて伝わらないD3 ver.4の話
(20)
インフォグラフィックス時代のD3.js入門
インフォグラフィックス時代のD3.js入門
WordPress 3.6 世告げの姫と新機能
WordPress 3.6 世告げの姫と新機能
Azure DevOpsで技術同人誌作成
Azure DevOpsで技術同人誌作成
Nseg第32回勉強会
Nseg第32回勉強会
IoT キットハンズオン解説 (Azure ML Studio 編) Part1 共通手順
IoT キットハンズオン解説 (Azure ML Studio 編) Part1 共通手順
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
熊本クラウド語ろう会 - Azure開発入門
熊本クラウド語ろう会 - Azure開発入門
Ignite update databricks_stream_analytics
Ignite update databricks_stream_analytics
WordPressの進化とWordPress名古屋コミュニティの進化
WordPressの進化とWordPress名古屋コミュニティの進化
Docker on azure!進化していくcontainerを覗いてみよう!
Docker on azure!進化していくcontainerを覗いてみよう!
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
WordPress名古屋コミュニティの進化[WordBench Nagoya 2017年3月勉強会]
WordPress名古屋コミュニティの進化[WordBench Nagoya 2017年3月勉強会]
Flutter Meetup Tokyo (#18) _ Osaka (#10).pdf
Flutter Meetup Tokyo (#18) _ Osaka (#10).pdf
Ignite 2021秋 recap - 開発者向け新機能紹介
Ignite 2021秋 recap - 開発者向け新機能紹介
Rancherでwindows server上のコンテナを管理できるか
Rancherでwindows server上のコンテナを管理できるか
くまあず Nchikita 140628-2
くまあず Nchikita 140628-2
FlutterとSupabaseでRDBを使った サーバーレスアプリ開発
FlutterとSupabaseでRDBを使った サーバーレスアプリ開発
昨今のpaas事情
昨今のpaas事情
180421第8回関西DB勉強会- たまにはpgAdmin4も使ってみよう
180421第8回関西DB勉強会- たまにはpgAdmin4も使ってみよう
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
More from 清水 正行
趣味駆動学習法
趣味駆動学習法
清水 正行
gunma.web#31 スライド
Data Visualization meetup 2017
Data Visualization meetup 2017
清水 正行
Data Visualization meetup 2017で登壇した際に使ったスライドです。
メディアにおけるWeb gis活用事例
メディアにおけるWeb gis活用事例
清水 正行
FOSS4G TOKAI 2017 講演資料
データビジュアライゼーションの作り方
データビジュアライゼーションの作り方
清水 正行
Inside Frontend #1にて発表したないようです。 HTML版 http://shimz.me/slide/inside-frontend_1/#/
データビジュアライゼーションはなぜ「コストが高い」と言われるのか
データビジュアライゼーションはなぜ「コストが高い」と言われるのか
清水 正行
近年、日本でもデータービジュアライゼーションを作成し公開する企業やメディアが増えてきています。しかし、同時に「データービジュアライゼーションはコストがかかる」という声を聞く事も多くなりました。そこで、なぜ「コストがかかる」と言われるのか、解決策はあるのか? を作成するエンジニアの視点から語ります。
D3.jsによるDOM操作
D3.jsによるDOM操作
清水 正行
「グラフを一切描かない勉強会」資料 D3.jsのdata,enter,exitメソッドについて。
More from 清水 正行
(6)
趣味駆動学習法
趣味駆動学習法
Data Visualization meetup 2017
Data Visualization meetup 2017
メディアにおけるWeb gis活用事例
メディアにおけるWeb gis活用事例
データビジュアライゼーションの作り方
データビジュアライゼーションの作り方
データビジュアライゼーションはなぜ「コストが高い」と言われるのか
データビジュアライゼーションはなぜ「コストが高い」と言われるのか
D3.jsによるDOM操作
D3.jsによるDOM操作
細かすぎて伝わらないD3 ver.4の話
1.
細かすぎて伝わらないD3 v4の話 Created by
Shimizu Masayuki
2.
プロフィール 清水正行FB TW 群馬県高崎市在住 GUNMA GIS
GEEK - Blog 2015/11 - 転職 毎日D3.jsを書いています コンプライアンスにより社名は秘匿。(申請書めんどい)
3.
ご注意 文字とコードを読むプレゼンです。 重要なのは初めの10分くらいです。 質問があれば逐次受けつます。 トイレとかにいってもOKです。 気楽にやりましょう。
4.
では、はじめます。
5.
6月28日、データビジュアライゼーショ ンライブラリとして有名な「D3.js」がメ ジャーバージョンアップしました。
6.
Releases v3 2012年12月22日- 3.0.0 2016年5月5日- 3.5.17 v4 2016年1月5日-
4.0.0 α 2016年6月24日- 4.0.0 rc 2016年6月28日- 4.0.0 2016年10月27日- 4.3.0
7.
メジャーバージョンアップによって、ど のような変化があったのか。
8.
阿鼻叫喚
9.
結構、大きな変更がありました。
10.
v4になって変わったところ。
11.
モジュール化 D3 v3は一つの巨大なライブラリでしたが、v4では機能ごとのモジ ュールに変更されました。モジュールはそれ単体でインストール して利用することができます。 npm install d3‐array <script src="https://d3js.org/d3‐array.v1.min.js"></script> webpackやrollup.jsを使って、必要なモジュールだけを選んでカス タムビルドすることもできるようになりました。
12.
でも、モジュールが別モジュールに依存 している場合がある。
13.
依存関係
14.
名前空間 モジュルー化に伴い名前空間の見直しが行われています。 スケール d3.scale.linear ‐> d3.ScaleLinear d3.scale.sqrt
‐> d3.scaleSqrt レイアウト d3.layout.cluster ‐> d3.cluster d3.layout.hierarchy ‐> d3.hierarchy d3.layout.pack ‐> d3.pack
15.
つまり?
16.
全滅
17.
全滅
18.
でっでも、ドットが抜けただけでしょ?
19.
まったく別名になったものもあるよ!
20.
スケール d3.scale.ordinal().rangePoints() ‐> d3.scalePoint() d3.scale.ordinal().rangeBand() ‐> d3.scaleBand() レイアウト d3.layout.force() ‐> d3.forceSimulation() Axis d3.svg.axis().orient('left') ‐> d3.axisLeft()
21.
細かい仕様の変更もある オブジェクトリテラルを渡してのアップデートはできなくなった v3 enable d3.select("cicle") .attr({ "cx": 10, "cy": 20, "r":10 }) v4 only d3.select("cicle") .attr("cx", 10) .attr("cy", 20) .attr("r", 10)
22.
v3 -> v4 細かい変更をあげたらきりがないほどに 変わりました。
23.
今のところv4に対応した参考書は、日本 で出版されたものはもとより、海外でも ほとんどありません。
24.
じゃあ、どうやって学べばいいのさ!
25.
D3 v4を学ぶには? チェンジログ読め。 CHANGES.md (長い) リファレンス読め。 D3
API Reference (膨大) 下記スライドを読め。 D3 V4 - What's new? (103枚)
26.
つらい。
27.
しかし、喜びの声もある。
28.
細かすぎてつたわらない、 ver.4の素晴らしい進化。
29.
d3-selection より柔軟なセレクター操作が可能に。
30.
セレクター基本操作 //セレクト var selected = d3.select("circle") //データバインド selected.data([1, 10, 100, 100]) //足りない要素を追加 var appented = selected.enter().append("circle") //多すぎる要素を削除 var deleted = selected.exit().remove() //アップデート selected.attr("fill", "red") appentede.attr("fill", "red")
31.
セレクタの戻り値が変わりました v3 > var svg = d3.select("svg") > svg [Array[1]] v4 > var svg = d3.select("svg") > svg {_groups: Array[1], _parents: Array[1]}
32.
セレクターオブジェクトTIPS > var g = d3.select("svg").selectAll("g") > g.data([100, 200, 300]).enter().append("g") > g { _groups: Array[1], _parents: Array[1] } > g.data([1000, 2000, 3000, 4000]) > g { _groups: Array[1], _parents: Array[1], _enter: Array[1], _exit: Array[1] }
33.
セレクションマージ セレクタとセレクタをマージして、両方を含む新たなセレクタを 生成できます。 var selected = d3.select("circle") .data([1, 100, 1000]) var appented = selected.enter().append("circle") //マージして一括アップデート selected.merge(appented) .attr("fill", "red")
34.
セレクションフィルター 選択済みのセレクターをフィルタリングしてアップデートを適用 することができます。 var circles = d3.selectAll("circle") circles.filter(function(d, i) { return i%2 }) .transition() .attr("cx", 0) 疑似クラスでの指定もできます。 circle.filter(":nth‐child(even)").attr("cx", 0)
35.
d3-queue 非同期通信ユーティリティ
36.
非同期通信をまとめて処理 d3.queue() .defer(d3.tsv, 'data1.tsv') .defer(d3.json, 'japan.geojson') .await(function(error, tsv, geojson) { console.log(tsv) console.log(geojson) }) d3.queue() .defer(d3.tsv, 'data1.tsv') .defer(d3.json, 'japan.geojson') .awaitAll(function(error, results) { console.log(results) })
37.
d3-array 便利な配列操作
38.
v3 - d3.nest > var data = [ {name:"a", value:10}, {name:"b", value:20}, {name:"a", value:30} ] > var nested = d3.nest() .key(function(d){ return d.name }) .map(data) > nested {a: Array[2], b: Array[1]}
39.
v4 - d3.nest 戻り値が、d3コレクションオブジェクトになりました。 > var data = [ {name:"a", value:10}, {name:"b", value:20}, {name:"a", value:30} ] > var nested = d3.nest() .key(function(d){ return d.name }) .map(data) > nested {$a: Array[2], $b: Array[1]} // <‐ d3‐collection Object
40.
d3-collection 便利な構造化データ形式
41.
> var map = d3.map({foo:1}) > map.set("bar", 2) .set("hoge", "aaaa") > map.get("hoge") aaaa > map.keys() ["foo", "bar", "hoge"] > map.values() [1, 2, "aaaa"] > map.entries() [ {"key":"foo","value":1}, {"key":"bar","value":2}, {"key":"hoge","value":"aaaa"} ]
42.
d3-stratify 階層データジェネレーター
43.
D3では階層構造のデータを必要とすることが多い { "name": "Eve", "children": [ { "name": "Cain" }, { "name": "Seth", "children": [ { "name": "Enos" }, { "name": "Noam" } ] }, ・・・ }
44.
フラットなオブジェクトを階層構造へ変換する var data = [ {"name": "Eve", "parent": ""}, {"name": "Cain", "parent": "Eve"}, {"name": "Seth", "parent": "Eve"}, {"name": "Enos", "parent": "Seth"}] var stratifyData = d3.stratify() .id(function(d){ return d.name }) .parentId(function(d){ return d.parent }) (data)
45.
csv -> 構造化データ id,value1,value2 日本, 日本.群馬県, 日本.群馬県.高崎市,100,2000 日本.群馬県.前橋市,200,1000 日本.群馬県.桐生市,130,3000 日本.埼玉県, 日本.埼玉県.さいたま市,140,3200 日本.埼玉県.所沢市,210,2400 日本.東京都, 日本.東京都.千代田区, 日本.東京都.千代田区.大手町,220,1000 var stratify = d3.stratify() .parentId(function(d) { return d.id.substring(0, d.id.lastIndexOf(".")) }) var root = stratify(tsv)
.sum(function(d) { return d.value1 })
46.
d3-transition より自在なアニメーションを実現。
47.
イベントリスナー トランジションの終了時にイベントが発行されるようになりまし た。 var circle = d3.select("circle") circle .transition() .duration(2000) .attr("cx", 500) .on("start", function(){ console.log("start!") }) .on("end", function(){ console.log("end!") })
48.
トランジションチェイン AからBへ移動して、さらにCへと移動するなど複雑なアニメーシ ョンが可能に。 var circle = d3.select("circle") circle .transition() .duration(1000) .attr("cx", 500) <‐‐x軸を移動 .transition() .duration(1000) .attr("cy", 500) <‐‐ y軸を移動
49.
共通オブジェクト メソッドチェインの数を減らし、複数のオブジェクトを同期して アニメーションするなどが簡単にできるようになりました。 var t = d3.transition() .duration(2000) circle.transition(t) .attr("cx", 1000) rect.transition(t) .attr("x", 1000)
50.
イベントも共通のリスナーを設定できる。 var t = d3.transition() .duration(2000) .on("end", function(){ alert("トランジション終了") }) circle.transition(t) .attr("cx", 1000) rect.transition(t) .attr("x", 1000)
51.
d3-geo 地図表示
52.
Fit Extentd v3 &
v4 var projection = d3.geoMercator() .scale(2000) .center([139.5, 34]) v4.3.0 var projection = d3.geoMercator() .fitExtent([[0, 0], [width, height]], geojson) 幅と高さを指定してgeojsonを渡すと、いい感じに表示するための プロジェクションを返す。 レスポンシブな地図を描画しやすくなった。
53.
canvas レンタリング もうSVG専用だなんていわせない。
54.
var line = d3.line() .x(function(d) { return x(d.date); }) .y(function(d) { return y(d.value); }) SVGレンダリング path.datum(data).attr("d", line) canvasレンダリング var context = d3.select("canvas").node().getContext("2d") line.context(context)(data)
55.
地図もcanvasにレンタリグングできます var context = d3.select("canvas").node().getContext("2d") var projection = d3.geoMercator() .fitExtent([[0, 0], [chartWidth, chartHeight]], geojson) var geoPath = d3.geoPath().projection(projection) .context(context) geoPath(geojson) <‐ canvas Draw Maps
56.
d3-force 力学モデルでグラフを描画
57.
v3 Force Layout おなじみのコード。 var force = d3.layout.force() .nodes(nodes) .links(links) .size([width, height]) .gravity(0.1) .charge(‐30) .friction(0.95) .linkDistance(220) .linkStrength(1)
58.
v4 Force Simulation 全然違う。 var simulation = d3.forceSimulation() .force("link", d3.forceLink()
.id(function(d){ return d.index }) .distance(220)) .force("charge", d3.forceManyBody()) .force("center", d3.forceCenter(width / 2, height / 2)) .force("y", d3.forceY(0)) .force("x", d3.forceX(0))
59.
サイズ指定ではなくセンター指定になった V3 var force = d3.layout.force() .size([width, height]) V4 var simulation = d3.forceSimulation() .force("center", d3.forceCenter(width / 2, height / 2))
60.
ノードの衝突判定 新たにノード同士の衝突判定を行う機能が追加 var simulation = d3.forceSimulation() .force("collide",d3.forceCollide(function(d){ return d.r + 8 //半径に対して8pxのマージンを指定 }).iterations(16) )
61.
座標に最も近いノードを見つける var simulation = d3.forceSimulation() simulation.find(x, y, r) マウスイベントと連動させる svg.on("mousemove", function(){ var findNode = simulation.find(d3.event.x, d3.event.y) console.log(findNode) })
62.
ところで。
63.
疲れていませんか?
64.
まとめ
65.
v4になったことで、v3で不便であったことや一部 統合性のとれていなかった設計などが修正され、 非常に使いやすいライブラリになっています。座標 計算等のアルゴリズムも最適化され処理速度も向 上しているので、ぜひ使ってみてください。
Download now