何百ものカテゴリにわたる偏ったデータをどのように視覚化しますか? 私はこれを助けることができる新しいチャートフォームを実験してきました。 私はそれを「パックバー」と呼んでいます。これは、順序付けられた棒グラフとツリーマップを統合したものです。 最近のS&P 500時価総額データでは、パックされた棒グラフは次のようになります。

青い「プライマリ」バーと軸は、時価総額別に最大の12社を示す通常の順序付き棒グラフを形成します。 灰色の「セカンダリ」バーはそれぞれ、他の会社の1つを表しています。 一部のセカンダリバーは、スペースが許せばラベルを付けることができますが、それらの主な目的は、プライマリバーのコンテキストを提供することです。 アイデアは、フォーカス+コンテキストデータ視覚化の原則。
二次カテゴリがいくつあるか、それらの合計サイズは何か、さらにはサイズがどのように分散されているかを大まかに把握できます。 また、それらは一次バーと同じスケールであるため、軸にまたがる長さからいくつかの値を推定することもできます。 動的表示では、カテゴリラベルとセカンダリカテゴリの値にホバーラベルを介してアクセスできます。
右端が常に出てくるとは限りませんが、大きなセカンダリバーを最初に左から右に配置することで、通常はかなりうまく機能します。
例
値が非常に歪んでいて、セカンダリフィルがプライマリバーを超えない場合があります。 これは、名目GDPで世界経済をグラフ化する場合に当てはまります。 このパックされた棒グラフは、192の世界経済の上位7つを強調しています。 (とはまったく同じではありませんG7 、 ところで)。

4つの主要なカテゴリーのみを選択することは、米国経済が世界の名目GDPの約4分の1であるという事実を浮き彫りにします。

二次カテゴリの合計が一次バーと同じスケールに収まる場合は、このように別のバーにパックできます。

偏ったデータのソースは経済学だけではありません。 ニカルジピンの治験データからの副作用の数は次のとおりです。

バーのサイズは発生回数を表し、色は平均的な重大度を表します。 二次色は、一次カテゴリに焦点を合わせるためにまだ色あせていますが、より正確な色表現が重要な場合は、色あせている必要はありません。
この道を歩み始めたデータセットは、ニューヨーク市で登録された犬の名前のコレクションでした。 これが私の作品で、16,000を超える名前の上位25を強調しています。

他のパックされたバーの例とは異なり、二次カテゴリは、特定の犬の名前の検索をサポートするために、アルファベット順および行ごとに配置されました(ホバーラベルの助けを借りて)。 この配置の欠点は、右端が著しく均一でないことです。
(ツリーマップとは異なり)真のx軸を持つことの利点は、母集団全体の総和を推定できることです。 この場合、25行あり、それぞれがカウント軸上で4,000をわずかに超えています。 犬の数は25x4,000+=100,000+と見積もることができます。
ニカルジピンの例は、バーに連続カラースケールを使用することを示しています。 カテゴリカラーを使用すると、フェードによって色の解釈が複雑になる可能性が低くなります。 この犬の名前の見方では、「y」の音で終わる名前にオレンジを使用しました。

バリエーション
私はバリエーションを試してきましたが、上記の例はそれらの多くを示しています。 パック棒グラフを作成する場合、次のオプションから選択できます。
行数は? 良い一般的なデフォルトはありますか? 10のような丸め数を使用すると、乗算トリックを適用して総和を簡単に取得できますが、アスペクト比の方が重要な場合があります。
セカンダリバーをサイズで左から右に配置しますか、それとも行ごとにアルファベット順に配置しますか? サイズ別の左から右は、各セカンダリバーの左端の位置が、行に関係なく、サイズ別の並べ替え順序に対応することを意味します。 バーが大きいほど、左に遠くなります。 ある意味では、サイズ順に並べられたプライマリバーと一致し、右端がよりきれいになるという利点があります。 また、同じサイズを一緒に保つことは、分布を理解するのに役立つ場合があります。 行ごとのアルファベット順は、インタラクティブ表示で特定のカテゴリを見つけるのに役立ちます。 二次バーはアルファベット順に左から右に配置されます内部一番上の行から始まる各行。
二次バーの着色? 私はランダムなグレー、色あせた色、そしてトゥルーカラーを試してきました。 グレーをランダム化すると、区切り線が不要になります(連続するグレーの重複を回避します)。
プライマリバーのラベル付け? グラフ領域の外側の軸にラベルを配置すると、バー内に収まるという制約を回避できます。 ただし、バーの内側にプライマリラベルを配置すると、これを積み上げ棒グラフと区別するのに役立ち、スペース効率が向上します。
二次バーのラベル付け? 私は当初、彼らを強調するために二次ラベルを好まなかった環境役割ですが、いくつかのラベルを付けることは、何が起こっているのかよくわからない新しい視聴者にとって大きな助けになるようです。
二次バー用の個別のスタック? 「その他」のスタックは、すべての2次値の合計が1次バーと同じスケールになるようにデータが歪んでいる場合に実行可能です。
すべてまたは一部のセカンダリバーを1つのソリッドな「その他」の領域にマージしますか? これにより、コンテキストアスペクトのほとんどが維持され、右端が滑らかになり、表示のノイズが少なくなります。 しかし、それは二次サイズのカーディナリティと分布についてのいくつかの情報をあきらめます。
代替案
パックされたバーは、多くのカテゴリで歪んだデータを視覚化する別の方法とどのように比較されますか?
- と比較して棒グラフ上位のカテゴリのうち、パックされた棒グラフは残りのカテゴリのコンテキストを取得します。 主な欠点は、セカンダリバーによってグラフが大きくなり(またはプライマリバーが縮小し)、ラベルや注釈に使用される可能性のあるスペースを占有することです。
- に比べツリーマップ、パックされたバーは一般に、より正確なデータ表現(軸上のバーの長さ対軸のない領域)を持ちますが、より大きな利点は、目立つラベルと軸に沿ったサイズを取得する主要なカテゴリを表示することです。 ただし、ツリーマップはネストと真のスペースフィリングをサポートします(ギザギザの右端はありません)。 また、1x12ピクセルのバーよりも、3x4ピクセルの長方形の方が見やすいという意味で、小さな値はツリーマップでより適切に表現される場合があります。 パックされたバーの軸は正確さをもたらしますが、スペースを占有するため、ツリーマップのスペース効率が向上します。
- に比べパックされた泡(のようにオリジナルの犬の名前のバブルチャート)、パックされたバーは、スキャンのためのより規則的な配置と、データ値を表すための円の領域に対する長さの知覚上の利点があります。 ただし、ツリーマップの場合と同様に、小さな値はバブルとしてわかりやすい場合があります(直径4ピクセルの円と1x12ピクセルのバー)。
- と比較して1次元散布図、パックされたバーは、主要なカテゴリと累積合計の意味に目立つ、整列されたラベルを追加します。 散布図には、すべての値に正確な位置エンコーディングを使用し、サイズチャネルを別の変数で使用できるようにしておくという利点があります。ただし、重ね打ちはジッターまたは回避で対処する必要があります。これは、非常に偏ったデータでは問題になる可能性があります。
- に比べラップされたバー、バーを複数の列に再編成し、パックされたバーはスペース効率が高く、より多くのカテゴリ(100ではなく1,000)をサポートし、パックされたバーは総面積の感覚を追加します。 ラップされたバーのより正確な読み取りをサポートします「セカンダリ」ベースが整列しているため、棒の値。ラップされた棒は、通常の棒グラフのように見えるため、学習曲線が低くなります。
欠点
パックされたバーの主な批判は、積み上げ棒、これにより、各行のバーは互いに関連していると信じられます。 潜在的な混乱を減らすために、スタック間のギャップを通常のスタック棒グラフよりも小さくしましたが、それを排除できるかどうかはわかりません。 利点がそのハードルを上回っていることを願っています。
その他の欠点は、主にトレードオフであり、上記のオプションを選択することで対処できる可能性があります。 たとえば、ランダムグレーが気を散らすように見える場合は、意図的な簡略化として、セカンダリバーを別の方法で色付けするか、マージすることができます。
注釈付きガイド
この次の写真はあなたのためではありません。写真だけを見て投稿をざっと読んだ人向けです。

JMPでお試しください
この取り組みはまだ実験的なものですが、パックされた棒グラフの最も単純なバリエーションを作成するためのJSLスクリプトを添付しました。 JMP 。 これは、最初にパッキングロジックをデータに適用し、合成行番号と色変数を作成することによって機能します。 次に、グラフビルダーで、パックされた棒グラフの色と配置を使用して、通常の積み上げ棒グラフを作成します。
どう思いますか?
パックされたバーは特定の種類のデータに役立つと思いますが、私はあまりにも関与しすぎて客観的ではないことに気づきました。 ですから、レイアウト、用語、ラベリング、色など、この取り組みのすべての側面に関するフィードバックを探しています。この表示の恩恵を受ける可能性のあるデータがあるかどうかをお知らせください。プロトタイプを使用して試してみることができます。 。私は行ってきましたツイートその他の例;興味のある方はチェックしてください性別による犬の名前と製品の傷害カウント。 他のグラフ作成プラットフォームでパックされた棒グラフを作成してみたい場合は、それも素晴らしいことです。
ご覧いただきありがとうございます!
2017年8月の更新:添付のJMPスクリプトに加えて、パックされた棒グラフを作成するためのExcelアドインとd3.jsスクリプトが追加されました。 それらはで見つけることができますパックドバーgithubエリア。 アドインは、Exceldatavizの専門家とのコラボレーションを通じて行われました。ジョン・ペルティエ。 パックされたバーのポスターが受け入れられましたIEEE VIS 10月の会議。 ポスターの提出には25秒のプレビュービデオ;音声の代わりにキャプションが付いたアニメーションGIFバージョンが添付されています。
ありがとう、マーク。 パレートと言えば、最近、値の数が増えるにつれて、パックされたバーとパレートを比較するアニメーションGIFを作成しました。

ザン:
あなたのアイデアはKaiserFungによって拡張されたようですバー密度プロット。
バーは簡単に解釈できます。 パックされたポリゴンを使用すると、パックされた棒グラフでスライバーになる領域を表示できます。 私がバー密度プロットで売られているかどうかはまだわかりません...
ps先月、上からの秘密のものを分析して提示するために、パックされたバーを使用しました。 標準のパレートよりもはるかにうまく機能しました!
聞いてよかった、マーク-ありがとう! そして、実際のデータで試していただきありがとうございます。 パレートアプリケーションと詳細オンデマンドの側面を理解できてうれしいです。
私が使用できる匿名化された「秘密のもの」がある場合は、それを伝えてください。実用的な例があると常に良いことです。
ところで、私はチャートのギャラリーをツイートしてきました。
残念ながら、JMP13ではバーの間隔を簡単に制御することはできません。 本当に効果を得たい場合はいくつかのトリックがありますが、それ以外の場合、スクリプトはパックされたバーの外観を近似するだけです。
ザン:
涼しい! 私はそれを数回実行し、パレートプロットの優れた代替手段であることがわかりました。 私は製造改善に取り組んでいます。 私たちはトップ10のチャートを多用して、正しいことに取り組むように駆り立てています。 現在のパレートプラットフォームでは、トップ10を表示するには、combine last(n-10)原因を使用する必要があります。 (n-10)原因の詳細が埋もれてしまいます。 パックされたバーは、ツリーマップの要求に応じた詳細を備えた素晴らしいパレートを提供します。

バーの幅/間隔をどのように制御しますか? 私のバーはそれらの間に垂直方向の間隔がありました。
私はこの投稿を通して興味深い反応の進行がありました:)
私の最初の反応は、「これは本当に新しいことではありません。私たちは...ああ、待って、いや、それは違います...」という言葉を数回続けて行ってきました。
この手法は、大規模で順序付けられたデータセットに対して多くの可能性を秘めていると思います。 それが持っている欠点はすでにツリーマップに固有のものであり、この手法はそれらの欠点を改善しているように私には思えます。
最初は混乱する可能性が高いと思います。 これとツリーマップの違い、またはこれと積み上げ棒の違いを聴衆に理解させるのは、場合によっては難しいかもしれません。
しかし、調査する価値は十分にあると思います。標準のツリーマップではなく、この形式でデータをプロットしたいと思います。
よくやった。