📋 このステップで学ぶこと
- 線のスタイル(実線、破線、点線)の使い分け
- 色指定の3つの方法(名前、RGB、HEX)
- マーカーの種類とカスタマイズ方法
- 透明度(alpha)の効果的な活用
- 線の太さと点のサイズの調整
- グラフ全体のスタイル設定
📏 1. 線のスタイル(Line Style)
線のスタイルとは何か
線のスタイルとは、折れ線グラフの線をどのようなパターンで描くかを決める設定です。実線、破線、点線など、いくつかの種類があり、それぞれに適した使い方があります。
線のスタイルを使い分けることで、複数のデータを一つのグラフに表示しても区別しやすくなります。例えば、実測値は実線、予測値は破線で表示すると、見る人は一目で「これは予測だな」と理解できます。
💡 身近な例で考えてみよう
地図アプリのナビゲーションを思い出してください。
実線:現在地から目的地までの推奨ルート(確定した道)
破線:代替ルートや、まだ決まっていない部分
点線:歩行者専用道路や、参考程度の情報
グラフでも同じように、線のスタイルで「確実さ」や「重要度」を表現できます。
📊 主な線のスタイル
Matplotlibで使える主な線のスタイルは4種類です。それぞれの用途を理解して使い分けましょう。
| スタイル名 |
短縮形 |
見た目 |
主な用途 |
| solid |
‘-‘ |
──── |
メインデータ、実測値 |
| dashed |
‘–‘ |
– – – – |
予測値、目標線、比較対象 |
| dashdot |
‘-.’ |
-・-・- |
第3の系列、区別が必要な場合 |
| dotted |
‘:’ |
・・・・ |
補助線、参考値、しきい値 |
線のスタイルを指定する方法
線のスタイルは、linestyleパラメータ(または短縮形のls)で指定します。まず、基本的な書き方を見てみましょう。
【linestyleパラメータの基本構文】
plt.plot(x, y, linestyle=’スタイル名’)
または短縮形を使用:
plt.plot(x, y, linestyle=’-‘) # 実線
plt.plot(x, y, linestyle=’–‘) # 破線
plt.plot(x, y, linestyle=’-.’) # 一点鎖線
plt.plot(x, y, linestyle=’:’) # 点線
【lsという省略形も使える】
plt.plot(x, y, ls=’–‘) # linestyleと同じ意味
それでは、実際にコードを書いて4種類の線のスタイルを比較してみましょう。以下のコードをGoogle Colabに入力して実行してください。
※ コードが横に長い場合は横スクロールできます
# ライブラリのインポート
# matplotlib.pyplotはグラフを描くためのライブラリ
# pltという短い名前で使えるようにする
import matplotlib.pyplot as plt
# 日本語フォントの設定(Google Colab用)
# これがないと日本語が文字化けする
plt.rcParams[‘font.family’] = ‘DejaVu Sans’
# サンプルデータを作成
# x軸のデータ(1から5まで)
x = [1, 2, 3, 4, 5]
# y軸のデータ(4種類の線用)
y1 = [2, 4, 6, 8, 10] # 実線用
y2 = [1, 3, 5, 7, 9] # 破線用
y3 = [3, 5, 4, 6, 8] # 一点鎖線用
y4 = [2, 3, 4, 5, 6] # 点線用
# グラフのサイズを設定
# figsize=(横幅, 高さ) をインチで指定
# 10インチ×6インチは見やすいサイズ
plt.figure(figsize=(10, 6))
# 4種類の線を描画
# linestyle: 線のスタイル
# linewidth: 線の太さ(2が見やすい)
# label: 凡例に表示する名前
plt.plot(x, y1, linestyle=’-‘, linewidth=2, label=’実線 (solid)’)
plt.plot(x, y2, linestyle=’–‘, linewidth=2, label=’破線 (dashed)’)
plt.plot(x, y3, linestyle=’-.’, linewidth=2, label=’一点鎖線 (dashdot)’)
plt.plot(x, y4, linestyle=’:’, linewidth=2, label=’点線 (dotted)’)
# グラフのタイトルを設定
# fontsize: 文字の大きさ
# fontweight: ‘bold’で太字
plt.title(“線のスタイル比較”, fontsize=16, fontweight=’bold’)
# 軸のラベルを設定
plt.xlabel(“X軸”, fontsize=12)
plt.ylabel(“Y軸”, fontsize=12)
# 凡例を表示
# labelで設定した名前がここに表示される
plt.legend(fontsize=11)
# グリッド線を表示
# alpha: 透明度(0.3で薄く表示)
plt.grid(True, alpha=0.3)
# グラフを表示
plt.show()
💡 コードのポイント解説
| コード |
意味 |
なぜ必要か |
import matplotlib.pyplot as plt |
グラフ描画ライブラリを読み込む |
Pythonでグラフを描くために必須 |
plt.figure(figsize=(10, 6)) |
グラフのサイズを指定 |
見やすい大きさにするため |
linestyle='-' |
線を実線で描く |
線の種類を区別するため |
linewidth=2 |
線の太さを2ポイントに |
細すぎると見にくい |
label='...' |
凡例に表示する名前 |
どの線が何かわかるため |
実践例:実測値と予測値を区別する
ビジネスでよくあるのは、実測値と予測値を同じグラフに表示するケースです。このとき、線のスタイルを使い分けることで、見る人が一目で区別できるようになります。
※ コードが横に長い場合は横スクロールできます
import matplotlib.pyplot as plt
# 月のラベル(X軸用)
months = [‘1月’, ‘2月’, ‘3月’, ‘4月’, ‘5月’, ‘6月’]
# 実測値のデータ(実際に計測された値)
actual = [100, 120, 150, 130, 160, 180]
# 予測値のデータ(モデルで予測した値)
forecast = [110, 125, 145, 140, 170, 190]
# グラフのサイズを設定
plt.figure(figsize=(10, 6))
# 実測値を実線で描画
# 実線は「確定した事実」を表すのに適している
plt.plot(months, actual,
linestyle=’-‘, # 実線
linewidth=2.5, # やや太め
marker=’o’, # 丸いマーカー
markersize=8, # マーカーのサイズ
color=’steelblue’, # 青系の色
label=’実測値’)
# 予測値を破線で描画
# 破線は「不確実な情報」を表すのに適している
plt.plot(months, forecast,
linestyle=’–‘, # 破線
linewidth=2.5,
marker=’s’, # 四角いマーカー
markersize=8,
color=’coral’, # オレンジ系の色
label=’予測値’)
plt.title(“売上の実測値と予測値”, fontsize=16, fontweight=’bold’)
plt.xlabel(“月”, fontsize=12)
plt.ylabel(“売上(万円)”, fontsize=12)
plt.legend(fontsize=11)
plt.grid(True, linestyle=’:’, alpha=0.3)
plt.show()
💡 線のスタイルの使い分けルール
線のスタイルは「確実さ」で使い分けるのが基本です。
| スタイル |
表す意味 |
具体例 |
| 実線(-) |
確定した事実 |
実測値、過去のデータ、メインの系列 |
| 破線(–) |
不確実な情報 |
予測値、目標値、前年比較 |
| 点線(:) |
補助的な情報 |
しきい値、平均線、参考値 |
| 一点鎖線(-.) |
区別が必要な系列 |
3つ以上の系列があるとき |
🎨 2. 色の指定方法
なぜ色が重要なのか
グラフにおける色は、単なる装飾ではありません。色には以下の重要な役割があります。
- 区別:複数のデータ系列を見分けやすくする
- 強調:重要なポイントを目立たせる
- 意味付け:赤=危険、緑=安全などの連想を活用する
- ブランディング:企業の色を使って統一感を出す
Matplotlibでは、3つの方法で色を指定できます。それぞれの特徴を理解して、状況に応じて使い分けましょう。
💡 身近な例で考えてみよう
絵の具で色を作る方法を思い出してください。
色名:「赤をください」と言う → 簡単だが、どんな赤か曖昧
RGB:「赤255、緑100、青100を混ぜて」→ 正確だが複雑
HEXコード:「#FF6464という色」→ 正確かつ簡潔(Webで標準)
プロの現場ではHEXコードが最も使われます。デザイナーとの共有や、ブランドカラーの再現に適しているからです。
📊 色を指定する3つの方法
| 方法 |
書き方の例 |
特徴 |
おすすめ度 |
| 色名 |
‘red’, ‘blue’, ‘steelblue’ |
覚えやすい、手軽 |
★★☆ |
| 短縮形 |
‘r’, ‘b’, ‘g’, ‘k’ |
最も簡潔、8色限定 |
★☆☆ |
| HEXコード |
‘#FF6B6B’, ‘#4ECDC4’ |
正確、Web標準、推奨 |
★★★ |
方法1: 色名(Named Colors)
最も簡単な方法は、英語の色名で指定することです。’red’や’blue’のような基本的な色名から、’steelblue’(鉄のような青)、’coral’(珊瑚色)のような詳細な色名まで使えます。
【よく使う色名の一覧】
◆ 基本の色
red : 赤
blue : 青
green : 緑
yellow : 黄
orange : オレンジ
purple : 紫
black : 黒
white : 白
gray : グレー
◆ おすすめの色名(見やすい)
steelblue : 落ち着いた青(ビジネス向け)
coral : 柔らかいオレンジ
seagreen : 海緑色
slategray : 濃いグレー
tomato : トマト色
dodgerblue : 明るい青
gold : ゴールド
darkgreen : 濃い緑
色名を使った例を見てみましょう。以下のコードをGoogle Colabに入力して実行してください。
※ コードが横に長い場合は横スクロールできます
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
plt.figure(figsize=(10, 6))
# color=’色名’ で色を指定
plt.plot(x, [1,2,3,4,5], color=’red’, linewidth=3, label=’red’)
plt.plot(x, [2,3,4,5,6], color=’blue’, linewidth=3, label=’blue’)
plt.plot(x, [3,4,5,6,7], color=’green’, linewidth=3, label=’green’)
plt.plot(x, [4,5,6,7,8], color=’steelblue’, linewidth=3, label=’steelblue’)
plt.plot(x, [5,6,7,8,9], color=’coral’, linewidth=3, label=’coral’)
plt.title(“色名での指定”, fontsize=16, fontweight=’bold’)
plt.legend(fontsize=10)
plt.grid(True, alpha=0.3)
plt.show()
方法2: 短縮形(Single Letter)
8色だけですが、1文字で色を指定できる方法があります。プロトタイプ(試作)を素早く作るときに便利です。
【短縮形の一覧】
‘r’ : red(赤)
‘g’ : green(緑)
‘b’ : blue(青)
‘c’ : cyan(シアン=水色)
‘m’ : magenta(マゼンタ=ピンク)
‘y’ : yellow(黄色)
‘k’ : black(黒)※blueのbと区別するためkを使用
‘w’ : white(白)
【使用例】
plt.plot(x, y, color=’r’) # 赤い線
plt.plot(x, y, color=’b’) # 青い線
plt.plot(x, y, color=’k’) # 黒い線
方法3: HEXコード(最も正確・推奨)
HEXコードは、Webデザインで標準的に使われる色の指定方法です。#RRGGBBという形式で、赤(R)、緑(G)、青(B)のそれぞれの濃さを16進数(00〜FF)で表します。
この方法を使うと、1600万色以上の中から正確に色を選べます。ブランドカラーの再現や、デザイナーとの色の共有に最適です。
【HEXコードの仕組み】
形式:#RRGGBB
RR = 赤の強さ(00〜FF、つまり0〜255)
GG = 緑の強さ(00〜FF)
BB = 青の強さ(00〜FF)
【例】
#FF0000 = 赤(赤が最大、緑と青がゼロ)
#00FF00 = 緑(緑が最大、赤と青がゼロ)
#0000FF = 青(青が最大、赤と緑がゼロ)
#000000 = 黒(すべてゼロ)
#FFFFFF = 白(すべて最大)
#808080 = グレー(すべて中間)
【ビジネスでよく使うHEXコード】
#2C3E50 = ダークブルー(高級感)
#3498DB = 明るいブルー(信頼感)
#E74C3C = 赤(警告、注目)
#27AE60 = 緑(成長、OK)
#F39C12 = オレンジ(注意)
HEXコードを使った例を見てみましょう。以下のコードをGoogle Colabに入力して実行してください。
※ コードが横に長い場合は横スクロールできます
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
plt.figure(figsize=(10, 6))
# HEXコードで色を指定(#RRGGBBの形式)
plt.plot(x, [1,2,3,4,5], color=’#FF6B6B’, linewidth=3, label=’#FF6B6B(赤系)’)
plt.plot(x, [2,3,4,5,6], color=’#4ECDC4′, linewidth=3, label=’#4ECDC4(緑系)’)
plt.plot(x, [3,4,5,6,7], color=’#45B7D1′, linewidth=3, label=’#45B7D1(青系)’)
plt.plot(x, [4,5,6,7,8], color=’#FFA07A’, linewidth=3, label=’#FFA07A(オレンジ系)’)
plt.plot(x, [5,6,7,8,9], color=’#98D8C8′, linewidth=3, label=’#98D8C8(ミント系)’)
plt.title(“HEXコードでの色指定”, fontsize=16, fontweight=’bold’)
plt.legend(fontsize=10)
plt.grid(True, alpha=0.3)
plt.show()
🎨 おすすめの色パレット
プロが使う色の組み合わせをそのまま使えば、見栄えの良いグラフが作れます。
【すぐに使える色パレット】
◆ ビジネス向け(プロフェッショナル・信頼感)
colors_business = [‘#2C3E50’, ‘#3498DB’, ‘#E74C3C’, ‘#F39C12’, ‘#27AE60’]
◆ パステル調(優しい・親しみやすい)
colors_pastel = [‘#FFB6C1’, ‘#B0E0E6’, ‘#FFE4B5’, ‘#E6E6FA’, ‘#98FB98’]
◆ モノクロ(色覚バリアフリー対応)
colors_mono = [‘#000000’, ‘#404040’, ‘#808080’, ‘#C0C0C0’, ‘#E0E0E0’]
◆ Seaborn風(モダン・データサイエンス)
colors_seaborn = [‘#4C72B0’, ‘#55A868’, ‘#C44E52’, ‘#8172B2’, ‘#CCB974’]
【使い方】
# リストを定義して
colors = [‘#2C3E50’, ‘#3498DB’, ‘#E74C3C’]
# インデックスで使う
plt.plot(x, y1, color=colors[0]) # 1番目の色
plt.plot(x, y2, color=colors[1]) # 2番目の色
⚠️ 色選びの注意点
| 注意点 |
問題 |
対策 |
| 色数が多すぎる |
認知負荷が高くなる |
3〜5色までに抑える |
| 赤と緑を隣り合わせ |
色覚異常の人が区別できない |
青とオレンジの組み合わせを使う |
| 薄い色同士 |
区別しにくい |
コントラストをつける |
| 意味と色の不一致 |
直感に反して混乱する |
赤=警告、緑=OKを守る |
⚫ 3. マーカーの種類とカスタマイズ
マーカーとは何か
マーカーとは、折れ線グラフや散布図でデータポイント(点)に表示される記号のことです。丸(●)、四角(■)、三角(▲)など、様々な形があります。
マーカーには以下の重要な役割があります:
- データの位置を明確に示す:正確な値の場所がわかる
- 複数の系列を区別する:色だけでなく形でも区別できる
- データポイントの強調:特に重要な点を目立たせる
💡 身近な例で考えてみよう
Google Mapの地図を思い出してください。
🔴 赤い丸 = 目的地
📍 ピン = 選んだ場所
★ 星 = お気に入り
▲ 三角 = 現在地の向き
形が違うだけで、すぐに「これは何か」がわかりますよね。グラフのマーカーも同じ役割を果たします。
📊 よく使うマーカーの種類
Matplotlibには30種類以上のマーカーがありますが、実際に使うのは6〜8種類程度です。
| マーカー |
記号 |
説明 |
適した用途 |
| ‘o’ |
● |
丸(最も一般的) |
メインのデータ、汎用 |
| ‘s’ |
■ |
四角(square) |
2番目の系列 |
| ‘^’ |
▲ |
上向き三角 |
増加傾向、上昇 |
| ‘v’ |
▼ |
下向き三角 |
減少傾向、下降 |
| ‘D’ |
◆ |
ダイヤモンド |
重要なポイント |
| ‘*’ |
★ |
星 |
特に注目してほしい点 |
| ‘+’ |
+ |
プラス |
散布図での区別 |
| ‘x’ |
× |
バツ |
散布図での区別 |
マーカーの基本的な使い方
マーカーはmarkerパラメータで指定します。markersize(またはms)でサイズを調整できます。
【マーカーのパラメータ】
marker : マーカーの形(’o’, ‘s’, ‘^’ など)
markersize : マーカーのサイズ(デフォルトは6)
省略形は ms
【基本的な書き方】
plt.plot(x, y, marker=’o’) # 丸いマーカー
plt.plot(x, y, marker=’s’, markersize=10) # 四角、サイズ10
【サイズの目安】
markersize = 5〜8 : 控えめ(データが多いとき)
markersize = 8〜12 : 標準(推奨)
markersize = 12〜15 : 目立たせたいとき
それでは、6種類のマーカーを比較してみましょう。以下のコードをGoogle Colabに入力して実行してください。
※ コードが横に長い場合は横スクロールできます
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
# 6種類のマーカーとラベルを定義
markers = [‘o’, ‘s’, ‘^’, ‘D’, ‘*’, ‘x’]
labels = [‘丸(o)’, ‘四角(s)’, ‘三角(^)’, ‘ダイヤ(D)’, ‘星(*)’, ‘バツ(x)’]
plt.figure(figsize=(12, 6))
# 各マーカーでグラフを描画
for i, (marker, label) in enumerate(zip(markers, labels)):
# enumerate: ループの回数(i)を取得
# zip: 2つのリストを同時にループ
y = [i+1, i+2, i+3, i+4, i+5]
plt.plot(x, y,
marker=marker, # マーカーの形
markersize=12, # マーカーのサイズ(大きめ)
linewidth=2, # 線の太さ
label=label) # 凡例に表示する名前
plt.title(“マーカーの種類比較”, fontsize=16, fontweight=’bold’)
plt.xlabel(“X軸”, fontsize=12)
plt.ylabel(“Y軸”, fontsize=12)
plt.legend(fontsize=11, ncol=2) # ncol=2: 凡例を2列で表示
plt.grid(True, alpha=0.3)
plt.show()
マーカーの詳細カスタマイズ
マーカーは形だけでなく、塗りつぶしの色、枠線の色、枠線の太さも変更できます。これを使うと、より洗練されたグラフが作れます。
【マーカーの詳細パラメータ】
markerfacecolor : マーカーの中の色(塗りつぶし)
省略形は mfc
markeredgecolor : マーカーの枠線の色
省略形は mec
markeredgewidth : 枠線の太さ
省略形は mew
【よく使うパターン】
パターン1: 塗りつぶし(デフォルト)
marker=’o’, color=’blue’
→ 青く塗りつぶされた丸
パターン2: 白抜き(中が白)
marker=’o’, markerfacecolor=’white’, markeredgecolor=’blue’
→ 中が白、枠が青の丸
パターン3: 強調(太い枠線)
marker=’o’, markerfacecolor=’white’, markeredgecolor=’red’, markeredgewidth=3
→ 中が白、太い赤枠の丸
白抜きマーカーは、特に重要なポイントを強調するときに効果的です。以下のコードで試してみましょう。
※ コードが横に長い場合は横スクロールできます
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.figure(figsize=(10, 6))
# 詳細にカスタマイズしたマーカー
plt.plot(x, y,
marker=’o’, # マーカーの形(丸)
markersize=15, # マーカーのサイズ(大きめ)
markerfacecolor=’white’, # マーカーの中を白に
markeredgecolor=’steelblue’, # 枠線を青に
markeredgewidth=3, # 枠線を太く
linewidth=2, # 線の太さ
color=’steelblue’, # 線の色
label=’白抜きマーカー’)
plt.title(“マーカーの詳細カスタマイズ”, fontsize=16, fontweight=’bold’)
plt.xlabel(“X軸”, fontsize=12)
plt.ylabel(“Y軸”, fontsize=12)
plt.legend(fontsize=11)
plt.grid(True, alpha=0.3)
plt.show()
複数系列でマーカーを使い分ける
ビジネスでよくあるのは、複数の商品や店舗のデータを1つのグラフで比較するケースです。色だけでなくマーカーの形も変えることで、色覚に頼らなくても区別できるグラフになります。
※ コードが横に長い場合は横スクロールできます
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [100, 120, 150, 130, 160] # 商品A
y2 = [80, 110, 120, 140, 150] # 商品B
y3 = [120, 100, 130, 120, 140] # 商品C
plt.figure(figsize=(10, 6))
# 系列ごとに色とマーカーを変える
plt.plot(x, y1,
marker=’o’, # 丸
markersize=10,
linewidth=2,
color=’#3498DB’, # 青
label=’商品A’)
plt.plot(x, y2,
marker=’s’, # 四角
markersize=10,
linewidth=2,
color=’#E74C3C’, # 赤
label=’商品B’)
plt.plot(x, y3,
marker=’^’, # 三角
markersize=10,
linewidth=2,
color=’#27AE60′, # 緑
label=’商品C’)
plt.title(“商品別売上推移”, fontsize=16, fontweight=’bold’)
plt.xlabel(“月”, fontsize=12)
plt.ylabel(“売上(万円)”, fontsize=12)
plt.legend(fontsize=11)
plt.grid(True, alpha=0.3)
plt.show()
💡 マーカーを使う/使わないの判断基準
| 状況 |
マーカー |
理由 |
| データポイントが少ない(〜15個) |
使う |
個々の値が見やすくなる |
| データポイントが多い(50個以上) |
使わない |
マーカーが重なって見にくい |
| 複数の系列を区別したい |
使う |
形で区別できる(色覚バリアフリー) |
| 散布図 |
必ず使う |
線がないのでマーカーが必須 |
| 特定のポイントだけ強調 |
そこだけ使う |
注目ポイントが明確になる |
✅ ここまでのまとめ(セクション1〜3)
ここまでで、グラフの基本的な見た目をカスタマイズする方法を学びました。
- 線のスタイル:実線、破線、点線で「確実さ」を表現
- 色の指定:HEXコードが最も正確で推奨
- マーカー:形で系列を区別し、色覚バリアフリーにも対応
次のセクションでは、透明度(alpha)やサイズの調整など、さらに高度なカスタマイズ方法を学びます。
✨ 4. 透明度(Alpha)の活用
透明度とは何か
透明度(alpha)とは、グラフの要素がどれくらい透けて見えるかを決める設定です。0〜1の数値で指定し、1が完全不透明、0が完全透明(見えない)です。
透明度を使うと、複数のグラフを重ねて表示しても、すべてのデータが見えるようになります。特に散布図やヒストグラムで威力を発揮します。
💡 身近な例で考えてみよう
透明度は「セロファン紙」をイメージするとわかりやすいです。
alpha=1.0:厚紙(下のものが全く見えない)
alpha=0.5:色付きセロファン(下がうっすら見える)
alpha=0.1:薄いトレーシングペーパー(ほとんど透明)
alpha=0.0:ガラス(完全に透明、何も描かれない)
赤と青のセロファンを重ねると紫に見えるように、透明度を使うとグラフの重なりが美しく表現できます。
📊 透明度の主な用途
| 用途 |
推奨alpha値 |
具体例 |
| 重なる散布図の点 |
0.3〜0.5 |
データが多く点が重なるとき |
| ヒストグラムの重ね合わせ |
0.5〜0.7 |
2グループの分布を比較 |
| 塗りつぶし領域 |
0.2〜0.4 |
信頼区間の表示 |
| グリッド線 |
0.2〜0.3 |
補助線を目立たなくする |
| 背景要素 |
0.1〜0.2 |
参考情報を薄く表示 |
透明度の効果を確認する
まず、透明度の違いを視覚的に確認してみましょう。同じ図形でもalphaの値で見え方が変わります。
※ コードが横に長い場合は横スクロールできます
import matplotlib.pyplot as plt
import numpy as np
# 0から10までを100分割した配列を作成
# np.linspace: 均等に分割した数値の配列を作る
x = np.linspace(0, 10, 100)
# 4つのグラフを横に並べて表示
# fig: 全体の図、axes: 個々のグラフ(4つ)
fig, axes = plt.subplots(1, 4, figsize=(16, 4))
# 試す透明度の値
alphas = [1.0, 0.7, 0.5, 0.3]
# 各グラフに異なる透明度で描画
for ax, alpha in zip(axes, alphas):
# fill_between: 線と軸の間を塗りつぶす
# np.sin(x): サイン波(波形)を描く
ax.fill_between(x, 0, np.sin(x), alpha=alpha, color=’steelblue’)
ax.set_title(f’alpha={alpha}’, fontsize=12, fontweight=’bold’)
ax.set_ylim(-1.5, 1.5)
ax.grid(True, alpha=0.3)
# グラフ同士の間隔を自動調整
plt.tight_layout()
plt.show()
散布図での透明度活用
散布図でデータが多いと、点が重なってどこにデータが集中しているかわからなくなります。透明度を使うと、重なった部分が濃くなるため、データの密度が一目でわかります。
※ コードが横に長い場合は横スクロールできます
import matplotlib.pyplot as plt
import numpy as np
# ランダムなデータを500個生成
# np.random.seed(42): 毎回同じ乱数を生成(再現性のため)
# np.random.randn(500): 標準正規分布に従う乱数を500個
np.random.seed(42)
x = np.random.randn(500)
y = np.random.randn(500)
# 2つのグラフを横に並べて比較
fig, axes = plt.subplots(1, 2, figsize=(14, 5))
# 左: 透明度なし(alpha=1.0)
axes[0].scatter(x, y,
s=100, # 点のサイズ
color=’steelblue’,
alpha=1.0) # 完全不透明
axes[0].set_title(‘透明度なし(alpha=1.0)’, fontsize=14, fontweight=’bold’)
axes[0].set_xlabel(‘X’, fontsize=12)
axes[0].set_ylabel(‘Y’, fontsize=12)
axes[0].grid(True, alpha=0.3)
# 右: 透明度あり(alpha=0.3)
axes[1].scatter(x, y,
s=100,
color=’steelblue’,
alpha=0.3) # 30%の不透明度
axes[1].set_title(‘透明度あり(alpha=0.3)’, fontsize=14, fontweight=’bold’)
axes[1].set_xlabel(‘X’, fontsize=12)
axes[1].set_ylabel(‘Y’, fontsize=12)
axes[1].grid(True, alpha=0.3)
plt.tight_layout()
plt.show()
💡 上のコードで学ぶこと
- 左のグラフ:点が重なっても見えないため、中心にデータが集中していることがわからない
- 右のグラフ:重なった部分が濃くなり、データの「密度」が視覚的にわかる
ヒストグラムの重ね合わせ
2つのグループの分布を比較したいとき、ヒストグラムを重ねて表示すると便利です。透明度がないと後ろのグラフが隠れてしまいますが、透明度を使えば両方が見えます。
※ コードが横に長い場合は横スクロールできます
import matplotlib.pyplot as plt
import numpy as np
# 2つのグループのデータを生成
# np.random.normal(平均, 標準偏差, データ数)
np.random.seed(42)
group_a = np.random.normal(70, 10, 100) # 平均70、標準偏差10
group_b = np.random.normal(75, 12, 100) # 平均75、標準偏差12
plt.figure(figsize=(10, 6))
# 2つのヒストグラムを重ねて表示
# bins=15: 15本の棒に分割
# alpha=0.6: 60%の不透明度(重なりが見える)
plt.hist(group_a, bins=15, alpha=0.6, color=’steelblue’, label=’グループA(平均70)’)
plt.hist(group_b, bins=15, alpha=0.6, color=’coral’, label=’グループB(平均75)’)
plt.title(“2グループの分布比較”, fontsize=16, fontweight=’bold’)
plt.xlabel(“値”, fontsize=12)
plt.ylabel(“頻度”, fontsize=12)
plt.legend(fontsize=11)
plt.grid(True, axis=’y’, alpha=0.3)
plt.show()
💡 透明度の推奨値まとめ
| alpha値 |
見え方 |
適した用途 |
| 1.0 |
完全不透明 |
メインのグラフ、強調したい要素 |
| 0.7〜0.8 |
ほぼ不透明 |
サブのグラフ、やや控えめに |
| 0.5〜0.6 |
半透明 |
ヒストグラムの重ね合わせ |
| 0.3〜0.4 |
かなり透明 |
散布図の点、塗りつぶし領域 |
| 0.1〜0.2 |
ほぼ透明 |
グリッド線、背景情報 |
📏 5. 線の太さと点のサイズ
なぜサイズ調整が重要なのか
グラフの要素が細すぎると見にくく、太すぎると野暮ったい印象になります。適切なサイズ設定で、プロフェッショナルな仕上がりになります。
また、用途によって最適なサイズが異なります。プレゼンテーション用は太め、印刷物は標準的なサイズが適しています。
📊 サイズ関連のパラメータ一覧
| パラメータ |
省略形 |
対象 |
推奨値 |
| linewidth |
lw |
折れ線の太さ |
2〜3 |
| markersize |
ms |
折れ線のマーカー |
8〜12 |
| s |
なし |
散布図の点 |
50〜150 |
線の太さ(linewidth)の比較
線の太さはlinewidth(またはlw)で指定します。以下のコードで、さまざまな太さを比較してみましょう。
※ コードが横に長い場合は横スクロールできます
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
plt.figure(figsize=(10, 6))
# さまざまな太さの線を比較
plt.plot(x, [1,2,3,4,5], linewidth=0.5, label=’linewidth=0.5(細すぎ)’)
plt.plot(x, [2,3,4,5,6], linewidth=1.0, label=’linewidth=1.0(やや細い)’)
plt.plot(x, [3,4,5,6,7], linewidth=2.0, label=’linewidth=2.0(推奨)’)
plt.plot(x, [4,5,6,7,8], linewidth=3.5, label=’linewidth=3.5(プレゼン向け)’)
plt.plot(x, [5,6,7,8,9], linewidth=5.0, label=’linewidth=5.0(太すぎ)’)
plt.title(“線の太さ比較”, fontsize=16, fontweight=’bold’)
plt.legend(fontsize=11)
plt.grid(True, alpha=0.3)
plt.show()
マーカーサイズ(markersize)の比較
折れ線グラフのマーカーサイズはmarkersize(またはms)で指定します。
※ コードが横に長い場合は横スクロールできます
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
plt.figure(figsize=(10, 6))
# さまざまなマーカーサイズを比較
plt.plot(x, [1,2,3,4,5], marker=’o’, markersize=5, linewidth=2, label=’markersize=5′)
plt.plot(x, [2,3,4,5,6], marker=’o’, markersize=8, linewidth=2, label=’markersize=8′)
plt.plot(x, [3,4,5,6,7], marker=’o’, markersize=10, linewidth=2, label=’markersize=10(推奨)’)
plt.plot(x, [4,5,6,7,8], marker=’o’, markersize=15, linewidth=2, label=’markersize=15′)
plt.plot(x, [5,6,7,8,9], marker=’o’, markersize=20, linewidth=2, label=’markersize=20(大きすぎ)’)
plt.title(“マーカーサイズ比較”, fontsize=16, fontweight=’bold’)
plt.legend(fontsize=11)
plt.grid(True, alpha=0.3)
plt.show()
散布図の点のサイズ(s)
散布図ではsパラメータで点のサイズを指定します。注意点として、この値は面積を表すため、見た目の直径を2倍にするにはsを4倍にする必要があります。
※ コードが横に長い場合は横スクロールできます
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(42)
x = np.random.rand(50)
y = np.random.rand(50)
# 3つのグラフを横に並べて比較
fig, axes = plt.subplots(1, 3, figsize=(15, 4))
sizes = [20, 100, 300]
titles = [‘s=20(小さい)’, ‘s=100(適切)’, ‘s=300(大きい)’]
for ax, size, title in zip(axes, sizes, titles):
ax.scatter(x, y,
s=size, # 点のサイズ
alpha=0.6, # 透明度
color=’steelblue’,
edgecolors=’black’, # 枠線の色
linewidth=1) # 枠線の太さ
ax.set_title(title, fontsize=12, fontweight=’bold’)
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()
💡 用途別の推奨サイズ
| 用途 |
linewidth |
markersize |
s(散布図) |
| 画面表示(標準) |
2 |
8〜10 |
80〜120 |
| プレゼンテーション |
3〜4 |
12〜15 |
150〜200 |
| 印刷物・レポート |
1.5〜2 |
6〜8 |
50〜80 |
| データが多いとき |
1〜1.5 |
4〜6 |
20〜50 |
🎨 6. グラフ全体のスタイル設定
なぜ全体設定が必要なのか
毎回グラフを作るたびに同じ設定を書くのは非効率です。rcParamsを使えば、一度の設定ですべてのグラフに共通のスタイルを適用できます。
例えば、「すべてのグラフでフォントサイズを14にする」「線の太さを2にする」といった設定を最初に行えば、後は何も書かなくてもそのスタイルが適用されます。
💡 身近な例で考えてみよう
WordやGoogleドキュメントの「スタイル設定」と同じです。
文書を書くとき、毎回「見出しはMSゴシック、16pt、太字」と設定するのは面倒ですよね。「見出しスタイル」を設定しておけば、ワンクリックで適用できます。
rcParamsはグラフ版の「スタイル設定」です。最初に設定しておけば、すべてのグラフが統一されたデザインになります。
rcParamsによる一括設定
plt.rcParamsは、Matplotlibのグローバル設定を管理する辞書です。ここに値を設定すると、以降のすべてのグラフにその設定が適用されます。
以下のコードをノートブックの最初のセルに書いて実行してください。
※ コードが横に長い場合は横スクロールできます
# ==============================================
# グラフの初期設定(ノートブックの最初に1回だけ実行)
# ==============================================
import matplotlib.pyplot as plt
# — フォントサイズの設定 —
# 基本のフォントサイズ(これを基準に他が決まる)
plt.rcParams[‘font.size’] = 12
# 各要素のフォントサイズを個別に設定
plt.rcParams[‘axes.labelsize’] = 14 # X軸・Y軸のラベル
plt.rcParams[‘axes.titlesize’] = 16 # グラフのタイトル
plt.rcParams[‘xtick.labelsize’] = 11 # X軸の目盛り数字
plt.rcParams[‘ytick.labelsize’] = 11 # Y軸の目盛り数字
plt.rcParams[‘legend.fontsize’] = 11 # 凡例の文字
# — 図のサイズと解像度 —
plt.rcParams[‘figure.figsize’] = (10, 6) # デフォルトのサイズ(横10インチ×縦6インチ)
plt.rcParams[‘figure.dpi’] = 100 # 解像度(100で十分きれい)
# — グリッド線の設定 —
plt.rcParams[‘grid.alpha’] = 0.3 # グリッド線の透明度
plt.rcParams[‘grid.linestyle’] = ‘–‘ # グリッド線のスタイル(破線)
# — 線とマーカーのデフォルト設定 —
plt.rcParams[‘lines.linewidth’] = 2 # 線の太さ
plt.rcParams[‘lines.markersize’] = 8 # マーカーのサイズ
print(“✅ グラフの初期設定が完了しました!”)
【rcParamsでよく使う設定項目】
◆ フォント関連
font.size : 基本フォントサイズ
axes.labelsize : 軸ラベル(X軸、Y軸の名前)
axes.titlesize : グラフタイトル
xtick.labelsize : X軸の目盛り数字
ytick.labelsize : Y軸の目盛り数字
legend.fontsize : 凡例
◆ 図のサイズ
figure.figsize : (横, 縦) をインチで指定
figure.dpi : 解像度(dots per inch)
◆ 線とマーカー
lines.linewidth : 線の太さ
lines.markersize : マーカーのサイズ
◆ グリッド
grid.alpha : グリッド線の透明度
grid.linestyle : グリッド線のスタイル
スタイルシートを使う方法
Matplotlibには、あらかじめ用意されたスタイルシートがあります。これを使えば、ワンラインで見た目を大きく変えられます。
※ コードが横に長い場合は横スクロールできます
import matplotlib.pyplot as plt
# 利用可能なスタイル一覧を確認
print(“利用可能なスタイル:”)
print(plt.style.available)
【主なスタイルシート】
seaborn-v0_8 : モダンで見やすい(データサイエンスで人気)
ggplot : R言語のggplot2風(統計学者に人気)
bmh : シンプルでプロフェッショナル
fivethirtyeight : FiveThirtyEight風(ニュースサイト風)
dark_background : 背景が黒(プレゼン向け)
default : Matplotlibのデフォルト
【スタイルの適用方法】
plt.style.use(‘スタイル名’)
【注意】スタイルの適用はグラフを作成する前に行う
スタイルシートを適用してグラフを作成してみましょう。
※ コードが横に長い場合は横スクロールできます
import matplotlib.pyplot as plt
# Seaborn風のスタイルを適用
# このスタイルは背景がグレーになり、見やすい
plt.style.use(‘seaborn-v0_8′)
# サンプルデータ
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# グラフを作成(スタイルが自動適用される)
plt.figure()
plt.plot(x, y, marker=’o’)
plt.title(“Seabornスタイル適用後”)
plt.xlabel(“X軸”)
plt.ylabel(“Y軸”)
plt.show()
⚠️ スタイル使用時の注意
- スタイルは上書きされる:新しいスタイルを適用すると、以前の設定は消えます
- デフォルトに戻すには:
plt.style.use('default')を実行
- 一時的に使うには:
with plt.style.context('スタイル名'):のブロック内で使用
📝 STEP 8 のまとめ
✅ このステップで学んだこと
| トピック |
重要ポイント |
| 線のスタイル |
実線(確定)、破線(予測)、点線(補助)で意味を表現 |
| 色の指定 |
HEXコードが最も正確で推奨。色数は3〜5色まで |
| マーカー |
丸、四角、三角などで系列を区別。色覚バリアフリーにも有効 |
| 透明度(alpha) |
重ね合わせに必須。散布図は0.3〜0.5、ヒストグラムは0.5〜0.7 |
| サイズ調整 |
linewidth=2〜3、markersize=8〜12が標準。用途で調整 |
| 全体設定 |
rcParamsで一括設定。スタイルシートも活用 |
💡 最重要ポイント
カスタマイズで最も大切なのは「派手さ」より「わかりやすさ」です。
以下の原則を守れば、プロフェッショナルなグラフが作れます:
- 色数は3〜5色まで:それ以上は認知負荷が高い
- 一貫性を保つ:同じプロジェクト内では同じスタイルを使う
- 意味のある装飾だけ:見た目のためだけの装飾は避ける
- HEXコードを使う:正確で再現性が高い
次のステップでは、複数のグラフを並べて表示する方法(subplot)を学びます!
📝 実践演習
演習 1
基礎
2つの折れ線グラフを作成してください。1つ目は実線・青色(#3498DB)、2つ目は破線・赤色(#E74C3C)で表示してください。
【解答例】
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [2, 4, 6, 8, 10]
y2 = [1, 3, 5, 7, 9]
plt.figure(figsize=(10, 6))
# 実線・青色
plt.plot(x, y1,
linestyle=’-‘, # 実線
linewidth=2,
marker=’o’,
color=’#3498DB’, # 青(HEXコード)
label=’実線’)
# 破線・赤色
plt.plot(x, y2,
linestyle=’–‘, # 破線
linewidth=2,
marker=’s’,
color=’#E74C3C’, # 赤(HEXコード)
label=’破線’)
plt.title(“線のスタイル比較”, fontsize=16, fontweight=’bold’)
plt.xlabel(“X軸”, fontsize=12)
plt.ylabel(“Y軸”, fontsize=12)
plt.legend(fontsize=11)
plt.grid(True, alpha=0.3)
plt.show()
演習 2
応用
散布図を作成し、透明度0.5、点のサイズ100、色はHEXコード#4ECDC4を使用してください。また、点に黒い枠線をつけてください。
【解答例】
import matplotlib.pyplot as plt
import numpy as np
# ランダムなデータを50個生成
np.random.seed(42)
x = np.random.rand(50) * 10
y = np.random.rand(50) * 10
plt.figure(figsize=(10, 6))
plt.scatter(x, y,
s=100, # 点のサイズ
alpha=0.5, # 透明度
color=’#4ECDC4′, # ミント色
edgecolors=’black’, # 黒い枠線
linewidth=1) # 枠線の太さ
plt.title(“散布図(透明度とHEXコード使用)”, fontsize=16, fontweight=’bold’)
plt.xlabel(“X軸”, fontsize=12)
plt.ylabel(“Y軸”, fontsize=12)
plt.grid(True, alpha=0.3)
plt.show()
演習 3
発展
3つの商品の月別売上データを折れ線グラフで表示してください。条件:
• 商品A:丸マーカー、青色(#3498DB)
• 商品B:四角マーカー、赤色(#E74C3C)
• 商品C:三角マーカー、緑色(#27AE60)
• すべてlinewidth=2.5、markersize=10
【解答例】
import matplotlib.pyplot as plt
# 月のラベルとデータ
months = [‘1月’, ‘2月’, ‘3月’, ‘4月’, ‘5月’]
product_a = [100, 120, 150, 130, 160]
product_b = [80, 110, 120, 140, 150]
product_c = [120, 100, 130, 120, 140]
plt.figure(figsize=(10, 6))
# 商品A: 丸マーカー、青色
plt.plot(months, product_a,
marker=’o’,
markersize=10,
linewidth=2.5,
color=’#3498DB’,
label=’商品A’)
# 商品B: 四角マーカー、赤色
plt.plot(months, product_b,
marker=’s’,
markersize=10,
linewidth=2.5,
color=’#E74C3C’,
label=’商品B’)
# 商品C: 三角マーカー、緑色
plt.plot(months, product_c,
marker=’^’,
markersize=10,
linewidth=2.5,
color=’#27AE60′,
label=’商品C’)
plt.title(“商品別売上推移”, fontsize=16, fontweight=’bold’)
plt.xlabel(“月”, fontsize=12)
plt.ylabel(“売上(万円)”, fontsize=12)
plt.legend(fontsize=11)
plt.grid(True, alpha=0.3)
plt.show()
❓ よくある質問
Q1: HEXコードの色はどこで見つけられますか?
カラーピッカーツールを使いましょう。おすすめのサイトは以下の3つです。
- Coolors.co:ランダムに美しいパレットを生成。スペースキーを押すだけで新しいパレットが表示されます
- ColorBrewer2.org:データ可視化専用のカラーパレット。色覚バリアフリー対応
- Adobe Color:カスタムパレットを作成可能。補色や類似色を自動提案
気に入った色を見つけたら、HEXコード(#RRGGBBの形式)をコピーして使えます。
Q2: 線が太すぎたり細すぎたりします。適切な太さは?
linewidth=2〜3が最も見やすいです。目安は以下の通りです。
- linewidth=1: 細め(データが多いとき、印刷物)
- linewidth=2: 標準(迷ったらこれ)
- linewidth=3〜4: 太め(プレゼンテーション用)
- linewidth=5以上: 太すぎ(通常は避ける)
迷ったらlinewidth=2.5にしておけば間違いありません。
Q3: 散布図で点が重なって見にくいです。どうすればいいですか?
透明度(alpha)を0.3〜0.5に設定しましょう。これで重なった点も透けて見え、データの密度がわかります。それでも見にくい場合は、以下の対策も試してください。
- 点のサイズを小さくする(s=50〜100)
- 枠線をつける(edgecolors=’black’)
- ヒートマップや六角ビニング(hexbin)に変更
Q4: rcParamsの設定は毎回書かないといけませんか?
ノートブックごとに1回だけ、最初のセルに書けばOKです。一度設定すれば、そのノートブック内のすべてのグラフに適用されます。よく使う設定はテンプレートとして保存しておき、新しいノートブックにコピー&ペーストすると便利です。
ヒント:Googleドキュメントに設定コードを保存しておくと、いつでもコピーできます。
Q5: 色覚バリアフリー対応はどうすればいいですか?
以下の3つを心がけましょう。
- 赤と緑を隣り合わせにしない:代わりに青とオレンジの組み合わせを使う
- マーカーの形で区別する:色だけでなく、丸・四角・三角など形も変える
- 線のスタイルで区別する:実線・破線・点線を使い分ける
ColorBrewer2.orgでは「色覚バリアフリー」フィルターがあり、対応した色のみを表示できます。
artnasekai
#artnasekai #学習メモ