Splunk: 散布図・バブルチャート


###### 実施環境： Splunk Free 8.2.2

### 0. 概要

 Splunk においてデフォルトで使用できるグラフはいくつかありますが、その中に散布図というグラフと、バブルチャートというグラフが存在します。
この2つのグラフは、項目と項目の関係性を分析するのに用いられます。
このグラフを正しく活用するにはある程度統計に関する知識や経験が必要ですが、今回はそのあたりには触れず、 Splunk におけるグラフの作成方法に絞って説明します。

![WS000001.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/51bbc244-4a58-bd7e-58f4-e49dd533dd75.jpeg "概要")

### 1. SPL 文の組み方

例として、以下の SPL 文を使用します。

```Splunk:Splunk(散布図)
| makeresults count=10000
| eval ITEM = random() % 50
| eval NUM_X = random() % 1000
| eval NUM_Y = random() % 1000
| stats avg(NUM_X), avg(NUM_Y) BY ITEM
```

![WS000001.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/51bbc244-4a58-bd7e-58f4-e49dd533dd75.jpeg "散布図")

```Splunk:Splunk(バブルチャート)
| makeresults count=10000
| eval ITEM = random() % 50
| eval NUM_X = random() % 1000
| eval NUM_Y = random() % 1000
| eval NUM_SIZE = random() % 100
| stats avg(NUM_X), avg(NUM_Y), avg(NUM_SIZE) BY ITEM
```

![WS000003.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/773f910a-aa07-c634-6415-e117f65a918a.jpeg "バブルチャート")

表としては一番上のヘッダ行に軸の名前が入り、2行目以降は一番左の列から点の名前、横の値、縦の値が入ります。
バブルチャートの場合は一番右の列に点のサイズも追加されます。
 stats コマンドで関数フィールドを2つか3つ指定し、 BY 句を1つ指定したものがよく使用されます。

| - | 横軸名 | 縦軸名 |
| --- | --- | --- |
| 点名 | 横の値 | 縦の値 |
| 点名 | 横の値 | 縦の値 |
| ... | ... | ... |

| - | 横軸名 | 縦軸名 | - |
| --- | --- | --- | --- |
| 点名 | 横の値 | 縦の値 | 点のサイズ |
| 点名 | 横の値 | 縦の値 | 点のサイズ |
| ... | ... | ... | ... |

### 2. 使用方法

散布図は、 Splunk 視覚エフェクトの「 Scatter Chart 」を選択することで使用できます。

![WS000004.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/e80558a0-6cbf-3010-0958-bc72cce4fea1.jpeg "Scatter Chart")

バブルチャートは、 Splunk 視覚エフェクトの「 Bubble Chart 」を選択することで使用できます。

![WS000005.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/a03e3e20-a3b6-2c55-b0b9-c433461a1f0c.jpeg "Bubble Chart")

### 3. マークのサイズ

「 Bubble Chart 」を使用した際のフォーマットのマークタブには、「最小サイズ」「最大サイズ」という項目があります。
この設定を変更することで、点のサイズを変更できます。
この設定で変更できるのは純粋に点のサイズのみであり、ここで指定した値より小さいデータや大きいデータが除外されるといったことはありません。

![WS000006.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/505c4b5b-5909-6f3d-9726-af112047a49b.jpeg "マーク")

例えば、最小サイズ1/最大サイズ2の場合は以下のようになります。

![WS000007.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/5d68ad6f-2afe-950a-5466-c7cd1449b2cc.jpeg "1-2")

最小サイズ10/最大サイズ100の場合は以下のようになります。

![WS000008.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/2a399762-aefb-68a9-9669-b6edc53f8a47.jpeg "10-100")

最小サイズと最大サイズの差が大きいほど点のサイズの違いは見やすくなりますが、あまりに小さいサイズや大きいサイズの点は逆にグラフをわかりにくくします。
データの内容などに合わせて適宜変更してください。

### 4. 複数グループでの比較

上記の SPL において stats コマンドの BY 句にもう1つ項目を追加すると、色で点をグループ分けすることができます。

```Splunk:Splunk(散布図)
| makeresults count=10000
| eval ITEM1 = random() % 10
| eval ITEM2 = 10 + random() % 10
| eval NUM_X = random() % 1000
| eval NUM_Y = random() % 1000
| stats avg(NUM_X), avg(NUM_Y) BY ITEM1, ITEM2
```

![WS000010.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/b1fe180b-3c4e-f538-2e91-e2758421b0b2.jpeg "散布図2")

```Splunk:Splunk(バブルチャート)
| makeresults count=10000
| eval ITEM1 = random() % 10
| eval ITEM2 = 10 + random() % 10
| eval NUM_X = random() % 1000
| eval NUM_Y = random() % 1000
| eval NUM_SIZE = random() % 100
| stats avg(NUM_X), avg(NUM_Y), avg(NUM_SIZE) BY ITEM1, ITEM2
```

![WS000011.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/f70e2196-8c1a-81b9-59d7-9717c4fecf22.jpeg "バブルチャート2")

表としては一番上のヘッダ行に軸の名前が入り、2行目以降は一番左の列から点の名前、グループの名前、横の値、縦の値が入ります。
バブルチャートの場合は一番右の列に点のサイズも追加されます。

| - | - | 横軸名 | 縦軸名 |
| --- | --- | --- | --- |
| 点名 | グループ名 | 横の値 | 縦の値 |
| 点名 | グループ名 | 横の値 | 縦の値 |
| ... | ... | ... | ... |

| - | - | 横軸名 | 縦軸名 | - |
| --- | --- | --- | --- | --- |
| 点名 | グループ名 | 横の値 | 縦の値 | 点のサイズ |
| 点名 | グループ名 | 横の値 | 縦の値 | 点のサイズ |
| ... | ... | ... | ... | ... |

あまり細かくグループ分けしてもわかりにくいので、グループ分けは最小限にすることをおすすめします。