📋 このステップで学ぶこと
- テンプレートとは何か、なぜ必要なのか
- plt.rcParamsを使ったMatplotlibのデフォルト設定
- 企業カラーパレットの定義方法
- 複数のテーマ(コーポレート、プレゼン、ミニマル)の切り替え
- よく使うグラフを関数化する方法
- テンプレートライブラリの構築と共有
🎨 1. テンプレートの必要性
テンプレートとは
テンプレートとは、グラフの「ひな形」です。フォント、色、サイズなどの設定を一度定義しておけば、毎回同じ設定を書かなくて済むようになります。
Wordでテンプレートを使うと、毎回フォントやレイアウトを設定しなくて済むように、グラフにもテンプレートを用意しておくと、作業効率が大幅にアップします。
💡 テンプレートを身近な例で考えると
料理のレシピを想像してください。毎回「塩は何グラム、砂糖は何グラム」と考えるのは大変です。「基本の調味料配合」をメモしておけば、すぐに調理を始められます。
テンプレートも同じで、「基本のグラフ設定」を保存しておけば、データを入れるだけで美しいグラフが完成します。
📊 テンプレートの5つの利点
| 利点 |
テンプレートなし |
テンプレートあり |
| 時間短縮 |
毎回フォント・色・サイズを設定 |
一発で設定完了 |
| 一貫性 |
グラフごとにデザインがバラバラ |
すべて統一されたデザイン |
| ブランディング |
汎用的な色使い |
企業カラーで統一 |
| メンテナンス |
100個のグラフを個別修正 |
1箇所の修正で全体に反映 |
| チーム共有 |
人によってスタイルが違う |
全員が同じスタイル |
🎯 テンプレート化すべきもの
| 項目 |
具体例 |
テンプレート化のメリット |
| 企業カラー |
ブランドカラーを定義 |
どのグラフも同じ色で統一 |
| フォント |
タイトル16pt、ラベル12pt |
読みやすいサイズを維持 |
| グリッド |
グレーの点線、透明度30% |
グラフの見た目を統一 |
| 凡例 |
右上、フォントサイズ11pt |
凡例の位置を統一 |
| よく使うグラフ |
売上推移、Before/After |
関数1つで完成 |
⚙️ 2. plt.rcParamsでデフォルト設定を変更
plt.rcParamsとは
plt.rcParamsは、Matplotlibのデフォルト設定を管理する辞書です。この辞書を変更することで、それ以降に作成するすべてのグラフに設定が適用されます。
「rc」はRun Commandの略で、プログラムの起動時に読み込まれる設定を意味します。
【plt.rcParamsの仕組み】
plt.rcParams は辞書型のオブジェクト:
plt.rcParams = {
‘font.size’: 12, # フォントサイズ
‘axes.titlesize’: 16, # タイトルのサイズ
‘lines.linewidth’: 2, # 線の太さ
‘figure.figsize’: (10, 6), # 図のサイズ
… 数百個の設定項目
}
→ この値を変更すると、以降のグラフに反映される
基本的な設定方法
まず、plt.rcParamsを使って基本的な設定を変更する方法を学びましょう。
# ライブラリを読み込む
import matplotlib.pyplot as plt
import numpy as np
# フォントサイズを変更
plt.rcParams[‘font.size’] = 12
# タイトルのサイズと太さを変更
plt.rcParams[‘axes.titlesize’] = 16
plt.rcParams[‘axes.titleweight’] = ‘bold’
# 軸ラベルのサイズを変更
plt.rcParams[‘axes.labelsize’] = 14
📝 コードの意味
| コード |
意味 |
なぜ必要か |
| plt.rcParams[‘font.size’] |
基本のフォントサイズ |
すべてのテキストの基準サイズ |
| plt.rcParams[‘axes.titlesize’] |
グラフタイトルのサイズ |
タイトルを目立たせるため |
| plt.rcParams[‘axes.titleweight’] |
タイトルの太さ |
‘bold’で太字にする |
| plt.rcParams[‘axes.labelsize’] |
軸ラベルのサイズ |
X軸・Y軸のラベルサイズ |
設定関数を作成する
設定を関数にまとめると、使いたいときに1行で呼び出せるようになります。これが「テンプレート」の第一歩です。
コードが長いので、スマートフォンでは横スクロールして確認してください。
# =========================================
# 【実践】カスタムスタイル設定関数
# =========================================
import matplotlib.pyplot as plt
import numpy as np
def setup_matplotlib_style():
“””Matplotlibのカスタムスタイルを設定する関数”””
# —– フォント設定 —–
plt.rcParams[‘font.family’] = ‘sans-serif’ # フォントの種類
plt.rcParams[‘font.size’] = 12 # 基本フォントサイズ
plt.rcParams[‘axes.titlesize’] = 16 # タイトルサイズ
plt.rcParams[‘axes.titleweight’] = ‘bold’ # タイトルを太字
plt.rcParams[‘axes.labelsize’] = 14 # 軸ラベルサイズ
# —– グリッド設定 —–
plt.rcParams[‘axes.grid’] = True # グリッドを表示
plt.rcParams[‘grid.color’] = ‘gray’ # グリッドの色
plt.rcParams[‘grid.linestyle’] = ‘–‘ # グリッドを点線に
plt.rcParams[‘grid.alpha’] = 0.3 # グリッドの透明度
# —– 線のスタイル —–
plt.rcParams[‘lines.linewidth’] = 2 # 線の太さ
plt.rcParams[‘lines.markersize’] = 8 # マーカーサイズ
# —– 図のサイズ —–
plt.rcParams[‘figure.figsize’] = (10, 6) # 図のサイズ
plt.rcParams[‘figure.dpi’] = 100 # 画面表示の解像度
# —– 保存設定 —–
plt.rcParams[‘savefig.dpi’] = 300 # 保存時の解像度
plt.rcParams[‘savefig.bbox’] = ‘tight’ # 余白を自動調整
# —– 枠線設定 —–
plt.rcParams[‘axes.spines.top’] = False # 上の枠線を非表示
plt.rcParams[‘axes.spines.right’] = False # 右の枠線を非表示
print(“✓ カスタムスタイルを適用しました!”)
# 関数を実行して設定を適用
setup_matplotlib_style()
# テスト:グラフを作成
fig, ax = plt.subplots()
ax.plot([1, 2, 3, 4], [1, 4, 2, 3], marker=’o’)
ax.set_title(‘カスタムスタイルのグラフ’)
ax.set_xlabel(‘X軸’)
ax.set_ylabel(‘Y軸’)
plt.show()
📝 主要なrcParams設定項目
| カテゴリ |
設定項目 |
説明 |
| フォント |
font.size, font.family |
基本のフォント設定 |
| タイトル |
axes.titlesize, axes.titleweight |
グラフタイトルの設定 |
| 軸ラベル |
axes.labelsize, axes.labelcolor |
X軸・Y軸ラベルの設定 |
| グリッド |
axes.grid, grid.color, grid.alpha |
グリッド線の設定 |
| 線 |
lines.linewidth, lines.markersize |
線グラフの線の太さ |
| 図 |
figure.figsize, figure.dpi |
図のサイズと解像度 |
| 保存 |
savefig.dpi, savefig.bbox |
画像保存時の設定 |
| 枠線 |
axes.spines.top, axes.spines.right |
枠線の表示/非表示 |
🎨 3. 企業カラーパレットの定義
なぜ企業カラーが重要か
企業には「ブランドカラー」があります。たとえば、Googleなら青・赤・黄・緑、Appleなら白・黒・シルバーなど。グラフにも企業カラーを適用することで、ブランドイメージを統一できます。
Pythonでは、カラーコード(#0068B7など)をクラスにまとめて定義すると、いつでも簡単に呼び出せます。
コードが長いので、スマートフォンでは横スクロールして確認してください。
# =========================================
# 【実践】企業カラーパレットの定義
# =========================================
import matplotlib.pyplot as plt
import numpy as np
class CorporateColors:
“””企業カラーパレットを管理するクラス”””
# —– メインカラー —–
PRIMARY = ‘#0068B7’ # コーポレートブルー(メインの青)
SECONDARY = ‘#009944’ # グリーン(サブカラー)
ACCENT = ‘#F39800’ # オレンジ(アクセント)
# —– 濃淡バリエーション —–
LIGHT_BLUE = ‘#4DB8E8’ # 薄い青
DARK_BLUE = ‘#003D6B’ # 濃い青
LIGHT_GREEN = ‘#4DBB7A’ # 薄い緑
# —– ニュートラルカラー —–
DARK_GRAY = ‘#333333’ # 濃いグレー(テキスト用)
GRAY = ‘#666666’ # グレー
LIGHT_GRAY = ‘#CCCCCC’ # 薄いグレー
WHITE = ‘#FFFFFF’ # 白
# —– ステータスカラー —–
SUCCESS = ‘#009944’ # 成功(緑)
WARNING = ‘#F39800’ # 警告(オレンジ)
DANGER = ‘#E60012’ # 危険・エラー(赤)
INFO = ‘#0068B7’ # 情報(青)
# —– カラーパレット(リスト形式) —–
PALETTE = [PRIMARY, SECONDARY, ACCENT, LIGHT_BLUE, LIGHT_GREEN]
# 使用例
colors = CorporateColors()
# テスト:企業カラーで棒グラフを作成
fig, ax = plt.subplots(figsize=(10, 6))
categories = [‘商品A’, ‘商品B’, ‘商品C’, ‘商品D’, ‘商品E’]
values = [30, 45, 20, 35, 25]
ax.bar(categories, values, color=colors.PALETTE, edgecolor=’black’, linewidth=1.5)
ax.set_title(‘企業カラーを使用したグラフ’, fontsize=16, fontweight=’bold’)
ax.set_ylabel(‘売上(万円)’, fontsize=12)
ax.grid(axis=’y’, alpha=0.3)
plt.tight_layout()
plt.show()
print(“✓ 企業カラーでグラフを作成しました!”)
📝 カラークラスの仕組み
| コード |
意味 |
使い方 |
| class CorporateColors: |
カラーをまとめるクラスを定義 |
colors = CorporateColors() |
| PRIMARY = ‘#0068B7’ |
メインカラーを定義 |
colors.PRIMARY で呼び出し |
| PALETTE = […] |
複数の色をリストで定義 |
color=colors.PALETTE |
🔄 4. 複数テーマの切り替え
用途に応じたテーマ
グラフの用途によって、最適なデザインは異なります。正式なレポートにはコーポレートテーマ、プレゼンにはダークテーマ、論文にはミニマルテーマなど、複数のテーマを切り替えられると便利です。
🎨 テーマの種類と用途
| テーマ名 |
特徴 |
適した用途 |
| コーポレート |
企業カラー、白背景 |
正式レポート、社内資料 |
| プレゼンテーション |
ダーク背景、太い線 |
スライド、会議室での発表 |
| ミニマリスト |
シンプル、グリッドなし |
論文、学術発表 |
| カラフル |
明るい色、楽しい雰囲気 |
教育資料、SNS投稿 |
コードが長いので、スマートフォンでは横スクロールして確認してください。
# =========================================
# 【実践】複数テーマの定義と切り替え
# =========================================
import matplotlib.pyplot as plt
import numpy as np
class PlotThemes:
“””グラフテーマを管理するクラス”””
@staticmethod
def apply_corporate_theme():
“””コーポレートテーマ(正式発表用)”””
plt.style.use(‘seaborn-v0_8-whitegrid’)
plt.rcParams.update({
‘font.size’: 12,
‘axes.titlesize’: 16,
‘axes.titleweight’: ‘bold’,
‘axes.labelsize’: 14,
‘axes.prop_cycle’: plt.cycler(color=[
‘#0068B7’, ‘#009944’, ‘#F39800’, ‘#E60012’, ‘#920783’
]),
‘figure.facecolor’: ‘white’,
‘axes.facecolor’: ‘white’,
‘grid.alpha’: 0.3,
‘lines.linewidth’: 2.5
})
print(“✓ コーポレートテーマを適用しました”)
@staticmethod
def apply_presentation_theme():
“””プレゼンテーマ(ダーク背景)”””
plt.style.use(‘dark_background’)
plt.rcParams.update({
‘font.size’: 14,
‘axes.titlesize’: 18,
‘axes.titleweight’: ‘bold’,
‘axes.labelsize’: 16,
‘axes.prop_cycle’: plt.cycler(color=[
‘#4DB8E8’, ‘#4DBB7A’, ‘#FFB84D’, ‘#FF6B6B’, ‘#C792EA’
]),
‘lines.linewidth’: 3,
‘grid.alpha’: 0.2
})
print(“✓ プレゼンテーマを適用しました”)
@staticmethod
def apply_minimalist_theme():
“””ミニマリストテーマ(論文向け)”””
plt.style.use(‘default’)
plt.rcParams.update({
‘font.size’: 11,
‘axes.titlesize’: 14,
‘axes.labelsize’: 12,
‘axes.spines.top’: False,
‘axes.spines.right’: False,
‘axes.grid’: False,
‘axes.prop_cycle’: plt.cycler(color=[‘#000000’, ‘#666666’]),
‘lines.linewidth’: 1.5
})
print(“✓ ミニマリストテーマを適用しました”)
# 使用例:コーポレートテーマを適用
PlotThemes.apply_corporate_theme()
# テスト:複数の線を描画
fig, ax = plt.subplots(figsize=(10, 6))
for i in range(5):
ax.plot([1, 2, 3, 4], [i+1, i+3, i+2, i+4], marker=’o’, label=f’データ{i+1}’)
ax.set_title(‘コーポレートテーマのグラフ’)
ax.set_xlabel(‘X軸’)
ax.set_ylabel(‘Y軸’)
ax.legend()
plt.show()
📝 テーマ切り替えのポイント
@staticmethodは「クラスのインスタンスを作らずに呼び出せるメソッド」を定義するデコレータです。これにより、以下のように簡潔に呼び出せます。
PlotThemes.apply_corporate_theme() ← インスタンス作成不要!
🔧 5. 汎用プロット関数の作成
よく使うグラフを関数化する
「売上推移グラフ」「Before/After比較グラフ」「KPIカード」など、よく使うグラフは関数にまとめておくと、データを渡すだけで美しいグラフが完成します。
コードが長いので、スマートフォンでは横スクロールして確認してください。
# =========================================
# 【実践】売上推移グラフのテンプレート関数
# =========================================
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
def plot_sales_trend(data, x_col, y_col, title=’売上推移’,
target=None, figsize=(12, 6)):
“””
売上推移グラフを作成する関数
Parameters(パラメータ):
———————–
data : DataFrame
データフレーム
x_col : str
X軸のカラム名(日付・月など)
y_col : str
Y軸のカラム名(売上など)
title : str
グラフタイトル
target : float
目標値(オプション、指定すると赤い点線を表示)
figsize : tuple
図のサイズ
Returns(戻り値):
—————–
fig, ax : matplotlib の Figure と Axes オブジェクト
“””
# グラフの作成
fig, ax = plt.subplots(figsize=figsize)
# メインの折れ線グラフ
ax.plot(data[x_col], data[y_col],
marker=’o’, linewidth=3, markersize=10,
color=’#0068B7′, label=’実績’)
# 目標線(オプション)
if target is not None:
ax.axhline(y=target, color=’#E60012′,
linestyle=’–‘, linewidth=2, label=’目標’)
# スタイリング
ax.set_title(title, fontsize=18, fontweight=’bold’, pad=20)
ax.set_xlabel(x_col, fontsize=14)
ax.set_ylabel(y_col, fontsize=14)
ax.legend(fontsize=12)
ax.grid(axis=’y’, alpha=0.3)
# 値ラベルを追加
for x, y in zip(data[x_col], data[y_col]):
ax.text(x, y, f'{y:,.0f}’,
ha=’center’, va=’bottom’, fontsize=10)
plt.tight_layout()
return fig, ax
# —– 使用例 —–
# サンプルデータを作成
df_sales = pd.DataFrame({
‘月’: [‘1月’, ‘2月’, ‘3月’, ‘4月’, ‘5月’, ‘6月’],
‘売上’: [100, 120, 115, 140, 135, 150]
})
# 関数を呼び出すだけでグラフが完成!
fig, ax = plot_sales_trend(
df_sales,
x_col=’月’,
y_col=’売上’,
title=’2024年上半期 売上推移’,
target=130 # 目標値
)
plt.show()
print(“✓ テンプレート関数で売上推移グラフを作成しました!”)
Before/After比較グラフのテンプレート
施策の効果を示すために使う「Before/After比較グラフ」もテンプレート化しておくと便利です。
コードが長いので、スマートフォンでは横スクロールして確認してください。
# =========================================
# 【実践】Before/After比較グラフのテンプレート
# =========================================
import matplotlib.pyplot as plt
import numpy as np
def plot_before_after(categories, before, after,
title=’Before/After 比較’, figsize=(10, 6)):
“””
Before/After比較グラフを作成する関数
Parameters:
———–
categories : list
カテゴリ名のリスト(例: [‘訪問者数’, ‘CV数’, ‘CVR’])
before : list
Before の値のリスト
after : list
After の値のリスト
title : str
グラフタイトル
figsize : tuple
図のサイズ
“””
fig, ax = plt.subplots(figsize=figsize)
x = np.arange(len(categories)) # カテゴリの位置
width = 0.35 # 棒の幅
# Before の棒グラフ(赤系)
bars1 = ax.bar(x – width/2, before, width,
label=’Before’, color=’#E60012′, alpha=0.8)
# After の棒グラフ(緑系)
bars2 = ax.bar(x + width/2, after, width,
label=’After’, color=’#009944′, alpha=0.8)
# スタイリング
ax.set_title(title, fontsize=18, fontweight=’bold’, pad=20)
ax.set_ylabel(‘値’, fontsize=14)
ax.set_xticks(x)
ax.set_xticklabels(categories, fontsize=12)
ax.legend(fontsize=12)
ax.grid(axis=’y’, alpha=0.3)
# 値ラベルを追加
for bars in [bars1, bars2]:
for bar in bars:
height = bar.get_height()
ax.text(bar.get_x() + bar.get_width()/2., height,
f'{height:,.0f}’,
ha=’center’, va=’bottom’, fontsize=10)
plt.tight_layout()
return fig, ax
# —– 使用例 —–
categories = [‘訪問者数’, ‘CV数’, ‘CVR’]
before = [10000, 50, 0.5]
after = [15000, 120, 0.8]
fig, ax = plot_before_after(
categories, before, after,
title=’広告施策 Before/After’
)
plt.show()
print(“✓ Before/After比較グラフを作成しました!”)
【テンプレート関数のメリット】
従来のコード:
fig, ax = plt.subplots(figsize=(10, 6))
ax.bar(…)
ax.set_title(…)
ax.set_xlabel(…)
ax.set_ylabel(…)
ax.legend(…)
… 20行以上のコード
テンプレート関数を使うと:
fig, ax = plot_before_after(categories, before, after)
… たった1行で完成!
→ コード量が大幅に削減される
→ 毎回同じ品質のグラフが作れる
→ 設定ミスがなくなる
📦 6. テンプレートライブラリの構築
ライブラリとしてまとめる
ここまで作成したカラーパレット、テーマ、グラフ関数を1つのファイルにまとめると、どのプロジェクトでも再利用できる「ライブラリ」になります。
コードが長いので、スマートフォンでは横スクロールして確認してください。
# =========================================
# viz_templates.py(ファイルとして保存)
# =========================================
“””
データ可視化テンプレートライブラリ
使い方:
from viz_templates import PlotLib
lib = PlotLib()
fig, ax = lib.line_chart(df, ‘月’, ‘売上’)
“””
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# ========== カラー定義 ==========
class Colors:
“””カラーパレット”””
PRIMARY = ‘#0068B7’
SECONDARY = ‘#009944’
ACCENT = ‘#F39800’
DANGER = ‘#E60012’
SUCCESS = ‘#009944’
WARNING = ‘#F39800’
INFO = ‘#0068B7’
PALETTE = [PRIMARY, SECONDARY, ACCENT, DANGER, ‘#920783’]
# ========== スタイル定義 ==========
class Styles:
“””スタイル設定”””
@staticmethod
def corporate():
“””コーポレートスタイルを適用”””
plt.rcParams.update({
‘font.size’: 12,
‘axes.titlesize’: 16,
‘axes.titleweight’: ‘bold’,
‘axes.labelsize’: 14,
‘axes.prop_cycle’: plt.cycler(color=Colors.PALETTE),
‘figure.figsize’: (10, 6),
‘grid.alpha’: 0.3,
‘lines.linewidth’: 2.5
})
print(“✓ コーポレートスタイルを適用”)
# ========== プロットライブラリ ==========
class PlotLib:
“””グラフ作成ライブラリ”””
def __init__(self, style=’corporate’):
“””初期化(スタイルを適用)”””
if style == ‘corporate’:
Styles.corporate()
self.colors = Colors()
def line_chart(self, data, x, y, title=”, target=None, **kwargs):
“””折れ線グラフを作成”””
fig, ax = plt.subplots(figsize=kwargs.get(‘figsize’, (10, 6)))
ax.plot(data[x], data[y], marker=’o’, linewidth=3,
markersize=10, color=self.colors.PRIMARY)
if target:
ax.axhline(y=target, color=self.colors.DANGER,
linestyle=’–‘, linewidth=2, label=’目標’)
ax.set_title(title, fontsize=18, fontweight=’bold’)
ax.set_xlabel(x, fontsize=14)
ax.set_ylabel(y, fontsize=14)
ax.grid(axis=’y’, alpha=0.3)
return fig, ax
def bar_chart(self, data, x, y, title=”, **kwargs):
“””棒グラフを作成”””
fig, ax = plt.subplots(figsize=kwargs.get(‘figsize’, (10, 6)))
colors = kwargs.get(‘colors’, self.colors.PALETTE)
ax.bar(data[x], data[y], color=colors, edgecolor=’black’, linewidth=1.5)
ax.set_title(title, fontsize=18, fontweight=’bold’)
ax.set_xlabel(x, fontsize=14)
ax.set_ylabel(y, fontsize=14)
ax.grid(axis=’y’, alpha=0.3)
return fig, ax
def comparison_chart(self, categories, before, after, title=”, **kwargs):
“””Before/After比較グラフを作成”””
fig, ax = plt.subplots(figsize=kwargs.get(‘figsize’, (10, 6)))
x = np.arange(len(categories))
width = 0.35
ax.bar(x – width/2, before, width, label=’Before’,
color=self.colors.DANGER, alpha=0.8)
ax.bar(x + width/2, after, width, label=’After’,
color=self.colors.SUCCESS, alpha=0.8)
ax.set_title(title, fontsize=18, fontweight=’bold’)
ax.set_xticks(x)
ax.set_xticklabels(categories)
ax.legend()
ax.grid(axis=’y’, alpha=0.3)
return fig, ax
def save(self, fig, filename, dpi=300):
“””図を画像として保存”””
fig.savefig(filename, dpi=dpi, bbox_inches=’tight’)
print(f”✓ 保存しました: {filename}”)
ライブラリの使い方
上記のコードをviz_templates.pyというファイルに保存すると、別のPythonファイルやノートブックから以下のように呼び出せます。
# =========================================
# 別のファイルでライブラリを使用
# =========================================
# ライブラリをインポート
from viz_templates import PlotLib
import pandas as pd
# ライブラリを初期化
lib = PlotLib()
# サンプルデータ
df = pd.DataFrame({
‘月’: [‘1月’, ‘2月’, ‘3月’, ‘4月’, ‘5月’, ‘6月’],
‘売上’: [100, 120, 115, 140, 135, 150]
})
# 折れ線グラフを作成(1行で完成!)
fig, ax = lib.line_chart(df, ‘月’, ‘売上’, title=’売上推移’, target=130)
# 画像として保存
lib.save(fig, ‘sales_trend.png’)
plt.show()
💡 ライブラリ化のメリット
| メリット |
説明 |
| 再利用性 |
どのプロジェクトでも同じライブラリを使える |
| 保守性 |
ライブラリを更新すれば、すべてのプロジェクトに反映 |
| チーム共有 |
Gitで共有すれば、チーム全員が同じスタイルで作業 |
| 生産性向上 |
毎回同じコードを書く必要がなくなる |
📝 STEP 41 のまとめ
✅ このステップで学んだこと
| トピック |
重要ポイント |
| テンプレートの必要性 |
時間短縮、一貫性、ブランディング |
| plt.rcParams |
Matplotlibのデフォルト設定を変更 |
| 企業カラー |
クラスでカラーコードを一元管理 |
| 複数テーマ |
用途に応じてテーマを切り替え |
| 汎用関数 |
よく使うグラフを関数化 |
| ライブラリ化 |
再利用可能なモジュールとして保存 |
💡 最重要ポイント
テンプレートを作ることで、作業時間が大幅に短縮され、デザインの一貫性も保てます。
plt.rcParamsで基本設定を定義し、汎用プロット関数でよく使うグラフを関数化することで、数行のコードで美しいグラフが作成できます。
チーム全体で同じテンプレートを使うことで、ブランドイメージも統一されます!
📝 実践演習
演習 1
基礎
plt.rcParamsを使って、フォントサイズ14、線の太さ3に設定してください。
【解答コード】
import matplotlib.pyplot as plt
# フォントサイズと線の太さを設定
plt.rcParams[‘font.size’] = 14
plt.rcParams[‘lines.linewidth’] = 3
# テスト
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [1, 4, 2])
ax.set_title(‘テスト’)
plt.show()
ポイント:plt.rcParams[‘設定名’] = 値 の形式で設定します。
演習 2
応用
自分だけのカラーパレット(3色以上)をクラスで定義し、棒グラフに適用してください。
【解答コード】
import matplotlib.pyplot as plt
# 自分のカラーパレットを定義
class MyColors:
RED = ‘#FF6B6B’
GREEN = ‘#4ECDC4’
BLUE = ‘#45B7D1’
PALETTE = [RED, GREEN, BLUE]
colors = MyColors()
# グラフ作成
categories = [‘A’, ‘B’, ‘C’]
values = [30, 45, 25]
fig, ax = plt.subplots()
ax.bar(categories, values, color=colors.PALETTE)
ax.set_title(‘自分のカラーパレット’)
plt.show()
ポイント:クラスにカラーコードを定義し、PALETTEリストでまとめます。
演習 3
発展
売上推移グラフを作成するテンプレート関数を作成し、サンプルデータで動作確認してください。
【解答コード】
import matplotlib.pyplot as plt
import pandas as pd
def my_line_chart(data, x, y, title=”):
“””自作の折れ線グラフ関数”””
fig, ax = plt.subplots(figsize=(10, 6))
ax.plot(data[x], data[y], marker=’o’, linewidth=2, color=’#0068B7′)
ax.set_title(title, fontsize=16, fontweight=’bold’)
ax.set_xlabel(x)
ax.set_ylabel(y)
ax.grid(alpha=0.3)
return fig, ax
# テスト
df = pd.DataFrame({
‘月’: [‘1月’, ‘2月’, ‘3月’],
‘売上’: [100, 120, 110]
})
fig, ax = my_line_chart(df, ‘月’, ‘売上’, title=’売上推移テスト’)
plt.show()
ポイント:関数にまとめることで、1行で呼び出せるようになります。
❓ よくある質問
Q1: plt.rcParamsの設定は永続しますか?
いいえ、Pythonセッションが終了するとリセットされます。毎回設定を適用するには、スクリプトの最初に設定関数を呼び出すか、matplotlibrcファイルを作成してください。matplotlibrcファイルをプロジェクトフォルダに置くと、そのフォルダで実行する際に自動的に読み込まれます。
Q2: テンプレートはどこまで作り込むべきですか?
よく使うものから始めましょう。最初は3〜5個の基本的なグラフ(折れ線、棒、散布図など)をテンプレート化し、必要に応じて増やしていくのがおすすめです。最初から完璧を目指すと、かえって使いにくくなることがあります。
Q3: チームでテンプレートを共有するには?
Gitリポジトリで管理するのがおすすめです。テンプレートライブラリをGitリポジトリに保存し、pip install git+https://…でインストールできるようにすると便利です。また、社内のPyPIサーバーで配布する方法もあります。
Q4: Seabornのテーマとの違いは?
Seabornには既存のテーマがありますが、カスタマイズが限定的です。plt.rcParamsを使えば、Seabornのテーマをベースにしつつ、企業カラーや独自の設定を追加できます。plt.style.use(‘seaborn-v0_8-whitegrid’)でSeabornのベーステーマを適用してから、plt.rcParams.update()で上書きするのが一般的です。
Q5: Plotlyでもテンプレートは作れますか?
はい、Plotlyにも同様の仕組みがあります。plotly.io.templatesでテンプレートを定義・管理できます。また、fig.update_layout()の設定を関数化することで、Matplotlibと同様のテンプレートライブラリを構築できます。
artnasekai
#artnasekai #学習メモ