You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

15 KiB

意味のあるデータビジュアライゼーションを作る

 Sketchnote by (@sketchthedocs)
意味のあるデータビジュアライゼーション - スケッチノート by @nitya

「データを十分に拷問すれば、何でも白状する」 -- ロナルド・コース

データサイエンティストの基本的なスキルの一つは、質問に答えるのに役立つ意味のあるデータビジュアライゼーションを作成する能力です。データを可視化する前に、前のレッスンで行ったように、データをクリーンアップし準備する必要があります。その後、データを最適に提示する方法を決定することができます。

このレッスンでは以下を学びます:

  1. 適切なチャートタイプの選び方
  2. 誤解を招くチャートを避ける方法
  3. 色の使い方
  4. 読みやすさのためのチャートのスタイリング方法
  5. アニメーションや3Dチャートソリューションの構築方法
  6. 創造的なビジュアライゼーションの構築方法

講義前クイズ

適切なチャートタイプを選ぶ

前のレッスンでは、MatplotlibやSeabornを使ってさまざまな興味深いデータビジュアライゼーションを作成する実験をしました。一般的に、以下の表を使って質問に応じた適切なチャートタイプを選ぶことができます:

必要なこと 使用すべきもの
時間経過によるデータの傾向を示す 折れ線グラフ
カテゴリーを比較する 棒グラフ、円グラフ
合計を比較する 円グラフ、積み上げ棒グラフ
関係性を示す 散布図、折れ線グラフ、ファセット、二重折れ線グラフ
分布を示す 散布図、ヒストグラム、箱ひげ図
比率を示す 円グラフ、ドーナツグラフ、ワッフルグラフ

データの構成によっては、特定のチャートをサポートするためにテキストデータを数値データに変換する必要がある場合があります。

誤解を招くことを避ける

データサイエンティストが適切なチャートを選んだとしても、データを誤解を招く形で表示する方法はたくさんあります。これにより、データそのものを損なうことがあります。誤解を招くチャートやインフォグラフィックの例は数多く存在します!

アルベルト・カイロによる「How Charts Lie」

🎥 上の画像をクリックすると、誤解を招くチャートについてのカンファレンストークが見られます

このチャートはX軸を逆転させ、日付に基づいて真実の反対を示しています

悪いチャート 1

このチャートはさらに誤解を招きます。目は右側に引き寄せられ、時間の経過とともに各郡でCOVIDの症例が減少したと結論付けます。しかし、日付をよく見ると、誤解を招く下降傾向を示すために日付が並べ替えられていることがわかります。

悪いチャート 2

この悪名高い例では、色と反転したY軸を使用して誤解を招きます。銃に優しい法律の施行後に銃による死亡が急増したのではなく、目は逆の結論を導くように欺かれます

悪いチャート 3

この奇妙なチャートは、比率が操作されるとどれほど滑稽になるかを示しています:

悪いチャート 4

比較できないものを比較するのも、もう一つの不正な手法です。素晴らしいウェブサイトでは、「スプリアスな相関関係」として、メイン州の離婚率とマーガリンの消費量などの「事実」を関連付ける例を表示しています。Redditのグループもデータの醜い使い方を収集しています。

誤解を招くチャートによって目が簡単に欺かれる方法を理解することが重要です。データサイエンティストの意図が良くても、例えば多すぎるカテゴリーを示す円グラフのような悪いタイプのチャートを選ぶと、誤解を招く可能性があります。

上記の「フロリダ銃暴力」チャートでは、色がチャートに追加の意味を与える方法を示しています。特にMatplotlibやSeabornのようなライブラリで設計されていないチャートでは、これらのライブラリにはさまざまな検証済みのカラーパレットが含まれています。手作業でチャートを作成する場合は、色彩理論を少し学んでみてください。

チャートを設計する際には、アクセシビリティが重要な側面であることを認識してください。一部のユーザーは色覚異常を持っているかもしれません。視覚障害を持つユーザーにとってもチャートが適切に表示されるか確認してください。

チャートの色を選ぶ際には注意が必要です。色は意図しない意味を伝える可能性があります。上記の「身長」チャートの「ピンクの女性」は、明確に「女性的」とされる意味を伝え、チャート自体の奇妙さを増しています。

色の意味は地域によって異なる場合があり、色の濃淡によって意味が変わる傾向があります。一般的に、色の意味は以下の通りです:

意味
信頼、忠誠
黄色 幸せ、注意
環境、幸運、嫉妬
幸せ
オレンジ 活気

カスタムカラーでチャートを作成する場合、チャートがアクセシブルであり、選んだ色が伝えたい意味と一致していることを確認してください。

読みやすさのためのチャートのスタイリング

チャートは読みやすくなければ意味がありませんチャートの幅と高さをデータに合わせてスケールするようにスタイリングすることを検討してください。例えば、50州すべてを表示する必要がある場合、可能であればY軸に縦に表示して、横スクロールのチャートを避けてください。

軸にラベルを付け、必要に応じて凡例を提供し、データの理解を深めるためにツールチップを提供してください。

データがX軸でテキストとして表示される場合、読みやすさを向上させるためにテキストを角度をつけて表示することができます。Matplotlibは、データが対応している場合に3Dプロットを提供します。mpl_toolkits.mplot3dを使用して高度なデータビジュアライゼーションを作成することができます。

3Dプロット

アニメーションと3Dチャート表示

今日の最高のデータビジュアライゼーションの中には、アニメーション化されたものがあります。Shirley WuはD3を使って素晴らしいものを作成しています。例えば、'film flowers'では、各花が映画のビジュアライゼーションを表しています。Guardianの例では「bussed out」というインタラクティブな体験があり、GreensockとD3を使用してNYCがホームレス問題をどのように扱っているかを示すスクロール型の記事形式のビジュアライゼーションを提供しています。

バス輸送

「Bussed Out: How America Moves its Homeless」 - Guardian。ビジュアライゼーション by Nadieh Bremer & Shirley Wu

このレッスンではこれらの強力なビジュアライゼーションライブラリを深く学ぶことはできませんが、D3を使用してVue.jsアプリで「危険な関係」という本のアニメーション化されたソーシャルネットワークのビジュアライゼーションを表示するライブラリを試してみてください。

「Les Liaisons Dangereuses」は書簡形式の小説で、手紙のシリーズとして提示される小説です。1782年にChoderlos de Laclosによって書かれ、18世紀後半のフランス貴族の二人の主人公、Vicomte de ValmontとMarquise de Merteuilの悪意ある社会的操作を描いています。両者は最終的に破滅しますが、社会的な損害を大いに与えます。この小説は、復讐を企てたり単に問題を起こしたりするために彼らの周囲の人々に送られた手紙のシリーズとして展開します。これらの手紙のビジュアライゼーションを作成して、物語の主要な中心人物を視覚的に発見してください。

このソーシャルネットワークのアニメーションビューを表示するウェブアプリを完成させます。このアプリは、Vue.jsとD3を使用してネットワークのビジュアルを作成するために構築されたライブラリを使用します。アプリが実行されると、画面上でノードを引っ張ってデータをシャッフルすることができます。

危険な関係

プロジェクト: D3.jsを使ってネットワークを示すチャートを作成する

このレッスンフォルダには、完成したプロジェクトを参照できるsolutionフォルダが含まれています。

  1. スターターフォルダのルートにあるREADME.mdファイルの指示に従ってください。プロジェクトの依存関係をインストールする前に、マシンでNPMとNode.jsが実行されていることを確認してください。

  2. starter/srcフォルダを開きます。そこにはassetsフォルダがあり、小説のすべての手紙が番号付きで「宛先」と「送信者」の注釈付きで記載された.jsonファイルが見つかります。

  3. components/Nodes.vueのコードを完成させてビジュアライゼーションを有効にします。createLinks()というメソッドを探し、以下のネストされたループを追加してください。

.jsonオブジェクトをループして手紙の「宛先」と「送信者」のデータをキャプチャし、ビジュアライゼーションライブラリが消費できるlinksオブジェクトを構築します:

//loop through letters
      let f = 0;
      let t = 0;
      for (var i = 0; i < letters.length; i++) {
          for (var j = 0; j < characters.length; j++) {
              
            if (characters[j] == letters[i].from) {
              f = j;
            }
            if (characters[j] == letters[i].to) {
              t = j;
            }
        }
        this.links.push({ sid: f, tid: t });
      }

ターミナルからアプリを実行npm run serveし、ビジュアライゼーションを楽しんでください

🚀 チャレンジ

インターネットを巡って誤解を招くビジュアライゼーションを発見してください。作者はどのようにユーザーを欺いているのか、それは意図的なのか?ビジュアライゼーションを修正して、正しい表示方法を示してみてください。

講義後クイズ

復習と自己学習

誤解を招くデータビジュアライゼーションについての記事を読んでみてください:

https://gizmodo.com/how-to-lie-with-data-visualization-1563576606

http://ixd.prattsi.org/2017/12/visual-lies-usability-in-deceptive-data-visualizations/

歴史的な資産やアーティファクトに関する興味深いビジュアライゼーションを見てみてください:

https://handbook.pubpub.org/

アニメーションがビジュアライゼーションをどのように向上させるかについての記事を見てみてください:

https://medium.com/@EvanSinar/use-animation-to-supercharge-data-visualization-cd905a882ad4

課題

カスタムビジュアライゼーションを作成する

免責事項:
この文書は、AI翻訳サービス Co-op Translator を使用して翻訳されています。正確性を追求しておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご承知ください。元の言語で記載された文書が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤解釈について、当方は一切の責任を負いません。