概要
こんにちは、すのくろです。
今回は、折れ線グラフの応用で縦折れ線グラフの作成方法について解説していきます。
縦折れ線グラフというのは、下図のようなものです。
縦折れ線グラフは様々な指標について、データ項目をまとめて眺めていくときに便利です。
製品評価等のための官能検査に用いられる「SD法」でのアウトプットであるSDプロフィール(SDプロファイル)もこのような縦折れ線グラフを使って、各製品の特徴をまとめたりもしています。
普通に一つの関数で縦折れ線グラフは作れないと思いますので、少し工夫して作成する方法を試行錯誤して考えたのでお伝えします。
それでは早速やっていきましょう!
下準備
まずは必要なライブラリをインポートします。
使うのは基本的なものだけです。
# 数値計算やデータフレーム操作に関するライブラリをインポートする
import numpy as np
import pandas as pd
# 図やグラフを図示するためのライブラリをインポートする。
import matplotlib.pyplot as plt
%matplotlib inline
グラフ用データの作成
次にグラフ用のデータを例として作成しておきます。
今回は、10行5列のデータでA~Eの5項目でそれぞれデータが10個あるイメージです。
# グラフ用データの作成
data = np.random.randint(1, 10, (10, 5))
colname = ["A", "B", "C", "D", "E"]
df = pd.DataFrame(data, columns=colname)
df
縦折れ線グラフの作成
それでは本題の縦折れ線グラフの作成を進めていきます。
縦折れ線の実態としては、通常の折れ線グラフの軸の向きを回転させて図を作成して、その図を回転させて利用する方法をとっています。
まずは最初の列「A」だけの縦折れ線グラフを作成します。
# 折れ線グラフのプロット
plt.plot(df.iloc[:, 0], "o", c="k", mec='k', ls="solid", label =colname[0])
# plt.legend()
plt.xlabel("item", rotation=180)
plt.ylabel("value")
plt.xticks(range(10), rotation=90)
plt.yticks(rotation=90)
このグラフを使うときに90度させればOKです。
(画像の回転もプログラミングで自動化したいという方は、OpenCVを使う方法もあります。しかしそこまで凝ってやる必要はないかなと思います笑)
↓回転後(パワポ等に貼り付ける時)
複数項目の縦折れ線グラフでの表示
あとは、プロットする項目をfor文で追加してあげればほぼ完成です。
縦折れ線グラフは線が多いので、線の色、種類、マーカー形も変化させてあげると見やすくなると思います。
colors = ["k", "b", "g", "y", "r"]
linestyles =["solid", "dotted", "dashdot", "dashed", "solid"]
for i in range(len(colname)):
plt.plot(df.iloc[:, i], "o", color=colors[i], mec='k', ls =linestyles[i], label=colname[i])
plt.xlabel("item", rotation=180)
plt.ylabel("value")
plt.xticks(range(10), rotation=90)
plt.yticks(rotation=90)
# plt.legend()
plt.legend(loc='upper center', bbox_to_anchor=(.5, -.15), ncol=5)
この辺りの装飾については他の記事も参考にして頂けると幸いです。
【Python】かっこいい折れ線グラフ(散布図)の作成! | Python for Comfort(新しいタブで開く)
[Matplotlib] 簡単グラフ装飾のデフォルト設定! | Python for Comfort(新しいタブで開く)
あとは凡例だけは90度回転に対応していないので凡例をplt.legend()で表示した図形から、パワポ等でトリミングや回転でうまく加工して使ってあげれば良いかと思います。
最終アウトプットは下記になります。
まとめ
今回は縦折れ線グラフについて解説しました。
縦折れ線グラフは標準で用意されていないため、今回のように少し工夫をしてあげればできることがわかりました。
Pythonを中心としたプログラミングをより体系的に学びたいと言う方向けに、おすすめのオンラインスクールを2つ厳選して紹介していますので、こちらもよければご覧ください!
以上、ここまでお読みいただき、ありがとうございました!
コメント