WeeklyAlteryxTips#73 インタラクティブチャートの積み上げ棒グラフに合計を表示する

Alteryx

前回の技を応用した方法です。今回は少しワークフローを作り込む必要があります。

通常の積み上げ棒グラフ

複数項目を積み上げた棒グラフは以下のように作ることができます。

これは、Itemという項目内のpotato、banana、appleで分割しています。これは、「変換」タブで分割を使います。

その他の設定として、レイヤーにて棒のモードを「積み上げ」にし、テキストの位置を「内部」とすると、最初にお見せしたラベル付きの積み上げ棒グラフが作成できます。

折れ線グラフと同じようにやってみる

ここでポイントが、「棒のモード」はいずれかのアイテムを変更すると、すべて連動します。そのため、一つだけオーバーレイ、などに変更できない、ということです。なので、合計を計算した項目を作成し、棒グラフのレイヤーを一つ追加して透明化しようとしても、オーバーレイにした瞬間各項目のグラフが埋まってしまいます。

正しい方法

オーバーレイですべてを表現するためには、各アイテムが積み上げになったときの値をあらかじめ計算しておき、その位置で表現すれば良い、ということになります。例えば以下のようなイメージです。

これを実現するために、値の加工を先に行いましょう。

合計を表示するためのデータの加工

このようなケースでは、複数行フォーミュラもしくは累計ツールを使います。元データは以下のとおりです。

これに、以下のようにstoreでグループ化しつつ、salesの累計を取ります。

これにより以下のようなデータが得られます。

このRunTol_salesという項目でグラフを配置すればオッケーです。ただ、スタックの時にデータの並びが重要になります。つまり、レコードの上の方にあるデータから描画されるため、一番背景に来るデータをレコードの頭の方に持ってこなければならないので、結論としてはデータを大きい順に並べ替える必要があります。つまり、以下のようにソートツールで並び替えた結果をインタラクティブチャートツールにいれる必要があります。

棒グラフを描いていく

ベースの設定

まず、背景用のTotalレイヤーを追加しましょう。形は「棒」、X軸は「store」、Y軸は「RunTot_sales」です。

次に、メインの棒グラフ部分を追加します。レイヤ名は「Item」としておきます。こちらの設定も同様です。

次に、変換タブで、「Item」レイヤーを分割します(分割する項目は「Item」です)。

合計表示用のグラフを描画する

次にいよいよクライマックスです。レイヤータブでグラフの設定を行います。

不透明度は今回触っていません。これはもう一方のレイヤでグラフが隠れてしまうからです。気になる場合は不透明度0%にしても問題ありません。

棒のサイズは「オーバーレイ」にします。テキストは、「RunTot_sales」でテキストの位置を「外側」にすることで、グラフの上側に表示することができます。

それぞれのアイテムの棒グラフを設定する

次に、今回描いているアイテム(Item)のpotato、banana、appleそれぞれに対して設定を行う必要があります。以下のように、表示するテキストを設定します。

ポイントは、グラフ表示用の「Tot_sales」ではなく、表示したい値である「sales」を指定することです。テキストの位置は「内部」にしましょう。

ちなみに、上の例は「potato」のレイヤですが、banana、appleなど他のItemレイヤの各値に対しても同様に行う必要があります。ちなみに、棒のモードはすべての棒グラフで連携するので、最初に変えておけばほかも変わってくれます(便利、、、なのか不便なのか、って感じです)。

これで、以下のようなグラフが描画できます(グラフのサイズは変更しています)。

まとめ

  • 棒グラフに合計を重ねて表示する方法をご紹介しました
  • このケースでは事前にデータの加工が必要になります

サンプルワークフローダウンロード

次回

円グラフの中心に数字を入れてみましょう。

コメント

タイトルとURLをコピーしました