軸とグラフを読む|表・単位・割合・グラフ
このページはプロモーション(広告)を含みます。
表・単位・割合・グラフ(初級・読む22分+演習28分)
この授業のゴール
- グラフの軸の起点・目盛り・単位・期間・対象を、順に確認して読める
- 軸が0から始まらない棒グラフの、見た目の比と実際の比の差を計算できる
- 累計グラフと期間ごとのグラフの違いを、数値で読み取れる
- 誤解を招くグラフを、軸・種類・ラベルの観点から修正方針にできる
仕事でどう使うか
グラフは、短時間で多くの人に結論を伝える道具です。そのぶん、軸の取り方ひとつで印象が大きく変わります。作る側は誤解させない責任があり、読む側は見抜く責任があります。
| 路線 | この授業の使いどころ |
|---|---|
| DS(データサイエンティスト) | 分析結果のグラフに、単位・期間・対象・分母を書く。軸の起点を明示し、差が小さいときは数値も併記する |
| ML(機械学習エンジニア) | モデルの精度の比較グラフで、軸を切って差を大きく見せない。学習曲線や評価指標の軸を正しく読む |
| DX(DX推進・AI企画) | 経営会議用のダッシュボードで、累計と月次を取り違えない。現場の指標を誤解されないグラフで示す |
| RS(研究者) | 論文の図の軸・誤差の表し方を読む。軸を切った図に、見た目ほどの差がないことを見抜く |
この授業の目的は、グラフを見て最初に目盛りを確かめる習慣を作ることです。
前提
この授業は、割合・平均・単位の考え方を前提にします。
- 割合の分母と、パーセントポイント → 比率・割合・パーセントポイント
- 平均と中央値 → 平均・合計・中央値を手計算
- 単位と丸め → 単位と桁と丸め
- 座標と関数のグラフの読み方(数学の基礎) → 座標と関数の読み方
グラフの描画コードは、読めれば十分です。画面内のPythonで実際に描いて確かめます。
身近な状況:ほとんど同じ購入率が「2倍以上」に見える
ある店の、施策の前と後の購入率は次のとおりです(購入率 = 購入者数 ÷ 来店者数)。
| 期間 | 購入率 |
|---|---|
| 施策前 | 20.0% |
| 施策後 | 20.8% |
差は 0.8 パーセントポイントです。相対増加率は 0.8 ÷ 20.0 = 4% で、ささやかな改善です。
ところが、この2つを棒グラフにして、縦軸を 19.5%から 始めると、施策前の棒の長さは 20.0 − 19.5 = 0.5、施策後は 20.8 − 19.5 = 1.3 になります。見た目の比は 1.3 ÷ 0.5 = 2.6倍です。実際の比は 20.8 ÷ 20.0 = 1.04倍にすぎません。
人の目は、棒の長さを値の大きさとして受け取ります。軸が途中から始まっていると、長さの比が値の比と一致しなくなり、小さな差が大きく見えます。
この授業では、グラフを読むときの確認手順と、よくある誤解のパターンを数値で確かめます。
直感的な説明:グラフは「目盛り」を読んでから形を見る
グラフを見たとき、人はまず形(右肩上がり、急な下落)に目が行きます。しかし、形は軸の取り方で変わります。そこで、形を見る前に軸を読む習慣をつけます。
グラフを読む確認手順(チェックリスト)は次の6つです。
- 何のグラフか:題名と、縦軸・横軸の名前。
- 単位:円、千円、人、%、件。
- 期間:日、月、年。累計か、その期間だけの値か。
- 対象:全社か、1店舗か。人数と件数のどちらか。
- 起点と目盛り:縦軸は0から始まっているか。目盛りの間隔は等しいか。
- 分母:割合なら、何を何で割ったか。
棒グラフの棒の長さは「0からの距離」を表します。だから棒グラフの縦軸は0から始めるのが原則です。折れ線グラフは、点の位置と傾きで変化を見るので、軸を途中から始めることもありますが、その場合は目盛りを明記します。
最後に、グラフは結論の証拠であって、結論そのものではありません。グラフで差が大きく見えても、数値で差が小さければ、数値を信じます。
正確な定義:軸・起点・見た目の比・累計
用語を定義します。
- 軸(axis):値の大きさを位置に変える目盛りの線。縦軸(Y軸)、横軸(X軸)。
- 起点(基準値、ベースライン):軸の最初の値。
- 軸の切断:軸の起点を0以外から始めること。
- 目盛り(tick):軸の値を示す印。
起点が $b$ の棒グラフで、2つの値 $v_1, v_2$ を描くとき、棒の長さは $v_1 - b$ と $v_2 - b$ になります。見た目の比は次の式です。
$$\text{見た目の比} = \frac{v_2 - b}{v_1 - b}$$
ここで $v_1, v_2$ は描く値(購入率%など)、$b$ は軸の起点(同じ単位)です。冒頭の例は $v_1=20.0$、$v_2=20.8$、$b=19.5$ で、$(20.8-19.5)/(20.0-19.5) = 1.3/0.5 = 2.6$ です。$b=0$ なら $20.8/20.0 = 1.04$ で、値の比と一致します。
累計(累積)は、これまでの値を足し合わせたものです。
$$C_t = x_1 + x_2 + \cdots + x_t$$
$x_t$ は $t$ 期の値(その期間だけの売上など)、$C_t$ は $t$ 期までの累計です。累計のグラフは、値が0以上なら下がることがなく、右上がり(値が0の期は横ばい)になります。ある期の値 $x_t$ は、累計の差 $C_t - C_{t-1}$ から求められます。累計が上がり続けていても、各期の値は減っていることがあります。
二軸グラフは、左右に別の目盛りを持つグラフです。目盛りの範囲を自由に調整できるため、2つの線の交差や重なりが偶然の見せかけになりえます。
グラフの種類の目安:
| 伝えたいこと | 向いているグラフ |
|---|---|
| 項目どうしの大きさの比較 | 棒グラフ(起点0) |
| 時間の変化 | 折れ線グラフ |
| 全体に占める内訳 | 積み上げ棒、帯グラフ |
| 2つの量の関係 | 散布図 |
段階付き例題:軸を切った棒グラフの見た目の比を計算する
問題:購入者数が、先月52人、今月55人だった。縦軸が50から始まる棒グラフでは、見た目の比と実際の比はそれぞれいくつか。
ステップ1:実際の変化を求める。55 ÷ 52 = 1.0577...倍。増加率は (55−52) ÷ 52 = 5.77%。
ステップ2:起点を確認する。軸の起点は $b=50$。
ステップ3:棒の長さを求める。先月は 52 − 50 = 2、今月は 55 − 50 = 5。
ステップ4:見た目の比を求める。5 ÷ 2 = 2.5倍。見た目の増加は150%。
ステップ5:起点を0にする。長さは 52 と 55 で、比は 1.058倍。
画面で2つのグラフを並べて描きます。plt.subplots(1, 2) は、1行2列の図を作る関数で、図 fig と2つの座標領域 axes を返します。ax.bar は棒グラフを描き、ax.set_ylim(下限, 上限) は縦軸の範囲を決めます。
import matplotlib.pyplot as plt
labels = ['Last month', 'This month']
values = [52, 55]
fig, axes = plt.subplots(1, 2, figsize=(7, 3))
axes[0].bar(labels, values)
axes[0].set_ylim(50, 56)
axes[0].set_title('Axis starts at 50')
axes[1].bar(labels, values)
axes[1].set_ylim(0, 60)
axes[1].set_title('Axis starts at 0')
fig.tight_layout()
print('実際の比', round(55 / 52, 3))
print('見た目の比(起点50)', (55 - 50) / (52 - 50))
出力は、実際の比 1.058、見た目の比(起点50)2.5です。左の図は、今月の棒が先月の2.5倍に見えます。右の図は、ほぼ同じ高さに見えます。
ステップ6:結果を読む。購入者数は約5.8%の増加で、2.5倍の増加ではありません。報告では、数値と増加率を書き、グラフは起点0で描き直します。
操作して理解する:起点を動かす、累計を差に戻す
まず、起点 $b$ を変えたときの、見た目の比を計算します。関数 visual_ratio(v1, v2, base) は、2つの値と起点を受け取り、見た目の比(小数)を返します。
def visual_ratio(v1, v2, base):
return (v2 - base) / (v1 - base)
for base in [0, 40, 50, 51]:
print('起点', base, '見た目の比', round(visual_ratio(52, 55, base), 3))
出力は、起点0が1.058、起点40が1.25、起点50が2.5、起点51が4.0です。起点を値に近づけるほど、見た目の比は大きくなります。起点が51なら、52の棒は長さ1、55の棒は長さ4で、4倍に見えます。
次に、累計のグラフから各月の値に戻します。累計の売上(万円)が、1月から4月まで 100, 220, 330, 410 のとき、各月の売上は前月との差です。
cum = [100, 220, 330, 410]
monthly = [cum[0]] + [cum[i] - cum[i - 1] for i in range(1, len(cum))]
print('累計', cum)
print('各月', monthly)
出力は、各月 [100, 120, 110, 80] です。累計は右肩上がりですが、売上は2月をピークに、3月、4月と減っています。
試してください。visual_ratio(52, 55, 45) を計算すると、(55−45) ÷ (52−45) = 10 ÷ 7 ≒ 1.43 です。起点をいくつにすると、見た目の比がちょうど2になるか、考えてみましょう(答え:$(55-b)=2(52-b)$ より $b=49$)。
発展:折れ線の軸・対数軸・二軸グラフ
折れ線グラフの軸の切断:折れ線は、点の高さと傾きで変化を読みます。体温や株価のように、狭い範囲で動く値は、軸を途中から始めないと変化が見えません。この場合は、(1) 軸の範囲を目盛りで明示する、(2) 軸が切れていることを注記する、(3) 変化率の数値も併記する、の3点を行います。軸の切断が悪いのではなく、隠すことが問題です。
対数軸:縦軸の間隔を、値の差ではなく比で取る軸です。10、100、1000が等間隔になります。成長率が一定なら直線になるため、倍々に増えるデータの比較に便利です。ただし、慣れない読み手には誤解されやすいので、目盛りを明記します。
二軸グラフ:左軸が売上(万円)、右軸が気温(℃)のように、単位の違う2つの線を重ねるものです。左右の範囲を調整すると、線の交差や並行が作れます。2本の線が似た動きに見えても、相関があることも、因果があることも意味しません。単位の違う量は、別々のグラフに分けるのが安全です。
面積と体積の錯覚:棒の代わりに円の大きさや立体で量を表すと、半径を2倍にすると面積は4倍に見えます。値の2倍を半径の2倍で表すと、見た目は4倍になります。量の比較には、長さ(棒)を使うのが誤解を生みません。
グラフの設計の詳細は、可視化の授業で扱います。この授業では、目盛りを読み、起点と累計に注意することを確実にしてください。
よくある失敗
失敗1:棒グラフの軸を途中から始める
誤った例:購入率20.0%と20.8%を、縦軸19.5%から始まる棒グラフにする。
v1, v2 = 20.0, 20.8
base = 19.5
print('見た目の比(起点19.5)', round((v2 - base) / (v1 - base), 2))
print('実際の比', round(v2 / v1, 2))
print('実際の変化(pp)', round(v2 - v1, 1))
見た目の比は2.6、実際の比は1.04です。0.8ポイントの差が、2.6倍に見えます。直し方:棒グラフの縦軸は0から始める。差が小さいことを伝えたいなら、値のラベルを棒の上に書く。
失敗2:累計グラフの右肩上がりを「好調」と読む
誤った例:累計売上が毎月増えているので、「毎月売上が伸びている」と報告する。
cum = [100, 220, 330, 410]
monthly = [cum[0]] + [cum[i] - cum[i - 1] for i in range(1, 4)]
print('各月の売上', monthly)
print('4月の前月比(%)', round((monthly[3] / monthly[2] - 1) * 100, 1))
各月の売上は [100, 120, 110, 80] で、4月は前月より約27.3%の減少です。累計は、売上が0以上である限り下がることがないため、月ごとの勢いを表しません。直し方:変化を伝えたいときは、期間ごとの値(月次)のグラフにする。累計は「ここまでの総量」を示す目的に限る。
失敗3:購入者数の棒グラフで、店舗の良し悪しを比べる
誤った例:A店の購入者8人、B店の購入者20人の棒グラフを見て、「B店の方が成績が良い」と判断する。
stores = {'A': (8, 40), 'B': (20, 200)}
for name, (buyers, visitors) in stores.items():
print(name, '購入者', buyers, '来店者', visitors, '購入率', round(buyers / visitors, 3))
購入者数はB店が多いのですが、来店者数が5倍いるため、購入率はA店20%、B店10%です。人数(件数)のグラフは、規模の違いを含んでいます。直し方:店を比べるときは、分母をそろえた割合(購入率)のグラフにする。件数のグラフと割合のグラフを、目的で使い分ける。
まとめ
- グラフは、形を見る前に軸の名前・単位・起点・期間・対象・分母を読む。
- 棒グラフは0から始める。軸を切ると、見た目の比が実際の比からずれる。
- 累計グラフは常に右肩上がりになりうる。各月の勢いは、累計の差(期間ごとの値)で確認する。
- 人数のグラフは規模を含む。比較には分母をそろえた割合を使い、二軸の見た目の一致を関係の証拠にしない。
用語
- 軸の切断(truncated axis)
軸の起点を0以外から始めること。棒グラフでは差が誇張される。
- 累計(累積)(cumulative)
これまでの値を足し合わせた量。値が0以上なら必ず増加または横ばいになる。
- 二軸グラフ(dual-axis chart)
左右に別々の目盛りを持つグラフ。目盛りの調整で見た目の関係を作れる。
- 起点(ベースライン)(baseline)
軸の最初の値。棒の長さはこの起点からの距離で決まる。
よくある質問
なぜ棒グラフは0から始めるのですか。
棒の長さが値の大きさを表すからです。起点が0でないと、長さの比が値の比と一致せず、小さな差が大きく見えます。値の近くで比べたいなら、棒でなく折れ線や点で示します。
差が小さいことを、グラフでどう伝えればよいですか。
起点0の棒グラフに、値のラベルを付けます。差が小さいことが見た目でもわかるようにして、さらに増減率やパーセントポイントを文章で書きます。
累計のグラフはいつ使うのですか。
目標に対する進み具合や、ここまでの総量を示すときです。たとえば年間の売上目標に対する累計は、進捗の確認に向いています。月ごとの勢いを見るときは、月次のグラフにします。
他人が作ったグラフが誤解を招くか、どう見抜きますか。
軸の起点、目盛りの間隔、期間、単位、分母を順に確認します。次に、グラフの値を読み取って自分で増減率を計算し、見た目の印象と比べます。
円グラフは使ってはいけませんか。
内訳が少数(目安は5項目程度)で、合計が100%と明らかな場合には使えます。項目が多い場合や、項目どうしの大きさを比べたい場合は、棒グラフの方が読み取りやすくなります。
条件が変わって、軸の起点を0にできない場合は?
たとえば体温や為替のように、0に意味がない量は、起点を0にすると変化が見えません。その場合は、折れ線で表し、軸の範囲を明記します。棒グラフでなく折れ線を選ぶこと自体が、誤解を避ける設計の1つです。
確認問題
問1 棒グラフの縦軸が50から始まり、先月52、今月55の棒を描いた。見た目の比(今月÷先月)はいくつか。
- ① 約1.06倍
- ② 2.5倍
- ③ 1.1倍
- ④ 0.95倍
解答と解説
正解:②
棒の長さは起点からの距離で、2と5。見た目の比は5÷2=2.5倍です。実際の比は約1.06倍です。
問2 累計売上のグラフが右肩上がりの月でも、起こりえることはどれか。
- ① 累計は途中で必ず下がる
- ② 売上が0円の月はありえない
- ③ 各月の売上は必ず前月より増えている
- ④ 各月の売上が前月より減っている月がありうる
解答と解説
正解:④
売上が0以上なら累計は下がらない(売上が正の月は必ず増える)ため、各月の売上が減っていても右肩上がりは保たれます。
問3 A店の購入者数が8人、B店が20人の棒グラフを見て、B店の方が優れていると判断する前に確認すべきことはどれか。
- ① 来店者数などの分母と、購入率
- ② グラフのタイトルの文字の大きさ
- ③ 棒の本数
- ④ 棒の色
解答と解説
正解:①
人数のグラフは店の規模を含みます。優劣は、分母をそろえた購入率で比べます。
問4 折れ線グラフの縦軸を途中から始めて描くことについて、正しい説明はどれか。
- ① 切断すると値が変わる
- ② 絶対に許されない
- ③ 目盛りや切断を明示し、変化率の数値も併記すれば許容されることがある
- ④ 棒グラフでも同じ理由で常に許される
解答と解説
正解:③
折れ線は点の高さと傾きで読むので、狭い範囲の変化を見せるために軸を切ることがあります。ただし、切断を明示することが条件です。
問5 二軸グラフ(左軸は売上、右軸は気温)で、2本の線が似た動きをしている。この説明として最も適切なのはどれか。
- ① 必ず相関係数が1になる
- ② 売上が気温を決めている
- ③ 売上と気温の間に因果関係がある
- ④ 左右の軸の範囲を調整すれば似て見えるので、これだけでは関係を示したことにならない
解答と解説
正解:④
二軸は目盛りの範囲を自由に変えられるので、見た目の類似は、関係の証拠になりません。
問6 グラフを読むときの最初の確認として、最も適切なのはどれか。
- ① 線の形が右肩上がりかどうか
- ② 軸の名前・単位・起点・期間・対象
- ③ 色の組み合わせ
- ④ グラフの大きさ
解答と解説
正解:②
形は軸の取り方で変わるため、先に軸・単位・期間・対象を確かめます。
次に学ぶこと
これで ON04 の6授業が終わりです。総合テストと自力課題で、「来店数・購入数・売上から率と単価を計算し、誤ったグラフを修正する」ことを確認します。
学習を進めるときは、次の分野につなげます。割合と平均を統計的に扱う 記述統計と標本、SQLで率を出す 「分母をそろえた率」(有料版)、Pythonで表を扱う Pythonの最初の1行 です。算数の基礎に不安があれば 算数から数式への橋渡し に戻ってください。
この授業の確認問題だけで習得とはしません。
キャリア学習:データサイエンティスト・機械学習エンジニア・DX推進・研究者を目指す人の学習アプリ。164モジュール・984授業を、ブラウザで動くSQLとPythonの演習で。基礎と各分野の最初のモジュールは無料。全部は2,980円の買い切り。
アプリを無料で開く有料版と無料版の違い