9. 円グラフ#

9.1. 概要#

円グラフ(Pie Chart) とは,主に質的変数に対して,その比率を 扇形の角度 で表したグラフです. 扇形グラフ とも呼ばれます. 質的変数の比率を可視化する際に最もよく用いられるグラフの一つです. それぞれの要素が全体に対してどの程度占めるか直感的にわかりやすいという長所がありますが,一方で要素同士の比率の比較がしづらいという短所もあります.

例えば上図は,雑誌ごとの合計作品数の比率を表した円グラフです. 各雑誌がおおよそ1/4程度を占めているということ,特に週刊少年ジャンプが多いということはわかりますが,雑誌ごとの比較は難しいです. 例えば,(数値を見ずに)週刊少年マガジン週刊少年サンデーのどちらが多いかわかりますか?

9.2. Plotlyによる作図方法#

Plotlyでは,plotly.express.pie()でヒストグラムを作成可能です.

import plotly.express as px
fig = px.strip(df, values='col_val', names='col_name')

上記の例では,dfcol_val列の量を基準に,col_name列を凡例名とした円グラフのオブジェクトfigを作成します.

9.3. MADB Labを用いた作図例#

9.3.1. 下準備#

import pandas as pd
import plotly.express as px

import warnings
warnings.filterwarnings('ignore')
# 前処理の結果,以下に分析対象ファイルが格納されていることを想定
PATH_DATA = '../../data/preprocess/out/episodes.csv'
# Jupyter Book用のPlotlyのrenderer
RENDERER = 'plotly_mimetype+notebook'
def show_fig(fig):
    """Jupyter Bookでも表示可能なようRendererを指定"""
    fig.update_layout(margin=dict(t=50, l=25, r=25, b=25))
    fig.show(renderer=RENDERER)
df = pd.read_csv(PATH_DATA)

9.3.2. 雑誌別の合計作品数#

df_plot = \
    df.groupby('mcname')['cname'].nunique().reset_index()
df_plot = \
    df_plot.sort_values(
    'cname', ascending=False, ignore_index=True)
fig = px.pie(
    df_plot, values='cname', names='mcname',
    color_discrete_sequence= px.colors.diverging.Portland,
    title='雑誌別の合計作品数')
show_fig(fig)

9.3.3. 雑誌別の合計作者数#

df_plot = \
    df.groupby('mcname')['creator'].nunique().reset_index()
df_plot = \
    df_plot.sort_values(
    'creator', ascending=False, ignore_index=True)
fig = px.pie(
    df_plot, values='creator', names='mcname',
    color_discrete_sequence= px.colors.diverging.Portland,
    title='雑誌別の合計作者数')
show_fig(fig)