STEP 8:Matplotlibのカスタマイズ

🎨 STEP 8: Matplotlibのカスタマイズ

グラフの見た目を自由自在にカスタマイズしよう!

📋 このステップで学ぶこと

  • 線のスタイル(実線、破線、点線)の使い分け
  • 色指定の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では「色覚バリアフリー」フィルターがあり、対応した色のみを表示できます。

📝

学習メモ

データ可視化マスター - Step 8

📋 過去のメモ一覧
#artnasekai #学習メモ
LINE