stairs【折れ線グラフ (段階的定数)】3.4

メモ ( 基本 データの指定方法 線・塗りつぶしの指定方法 積み上げ 関連設定 ) 構文 設定・グラフパーツ

メモ

stairsのサンプル

基本

データの指定方法

線・塗りつぶしの指定方法

積み上げ

関連設定


構文

pyplot.stairs(
    values (配列形式:ステップの高さ)※data,
    edges (配列形式:ステップの端の位置)※data =None,
    *,
    orientation (str:ステップ方向)='vertical',
    baseline (下端の位置)=0,
    fill (bool:塗りつぶしの有無)=False,
    data (ラベル名指定データ)=None,
    **kwargs (その他プロパティ)) 3.4
axes.Axes.stairs(同上) 3.4
戻り値patches.StepPatch【ステップ区画】

values (配列形式)※dataステップの高さ (baseline (下端の位置)とは無関係)
edges (配列形式)※dataステップの端の位置 (values (ステップの高さ)より1つ多い個数)
    省略:[0, 1, 2, ...]
orientation (str) キーワード引数ステップ方向 ('vertical':垂直方向 | 'horizontal':水平方向)
baseline (float | 配列形式 | None) キーワード引数下端の位置
fill (bool) キーワード引数塗りつぶしの有無
data (キーワード引数)ラベル名指定データ
    (※data:ラベル名指定可・詳細は、データの指定方法 参照・下記が対象)
    ・values (ステップの高さ)
    ・edges (ステップの端の位置)
kwargs (可変長キーワード引数)StepPatch【ステップ区画】のプロパティ

StepPatch【ステップ区画】のプロパティ

プロパティデフォルト取得設定備考
agg_filtercallableagg フィルター
alphaスカラー
None
アルファ値 (0:透明 ~ 1:不透明)
(線とマーカー共有)
animatedboolアニメーション使用の有無
antialiased
aa
boolアンチエイリアス処理の有無
baselinefloat
配列形式
None
0下端の位置
capstyleCapStyle
str
線端スタイル
スタイル備考
'butt'
_enums.CapStyle.butt
butt
'projecting'
_enums.CapStyle.projecting
projecting
'round'
_enums.CapStyle.round
round
clip_boxBbox
clip_onboolクリッピングの有無 (True:範囲内のみ描画 / False:範囲外にも描画可)
clip_pathPatch
(Path, Transform)
None
colorcolor【色定義】各種色 (一括指定)
参照:edgecolor (ec)【外枠・塗りつぶしパターンの色】facecolor (fc)【塗りつぶし色】
contains 3.3callableピッカーイベント (参照:picker【ピッカーイベント】)
edgecolor
ec
color【色定義】
list( color【色定義】)
'face':塗りつぶし色
rcParams["patch.edgecolor"]:'black'外枠・塗りつぶしパターンの色
edges配列形式ステップの端の位置
facecolor
fc
color【色定義】
list( color【色定義】)
'none'
rcParams["patch.facecolor"]:'C0'塗りつぶし色
figureFigure所属フィギュア
fillbool塗りつぶしの有無
gidstrグループId (識別子として利用可)
hatchstr塗りつぶしパターン (繰り返しで高密度 / 組合せ可)
パターン備考
'/'斜線 (左下がり)
'\'斜線 (右下がり)
'|'垂直線
'-'平行線
'+'格子
'x'斜め格子
'o' (小文字オー)円 (小)
'O' (大文字オー)円 (大)
'.' (ドット)ドット
'*'星印
in_layoutboolレイアウト計算に含めるか否か
joinstyleJoinStyle
str
rcParams["patch.joinstyle"]結合スタイル
スタイル備考
'bevel'
_enums.JoinStyle.bevel
bevel
'miter'
_enums.JoinStyle.miter
miter
'round'
_enums.JoinStyle.round
round
labelobject凡例ラベル (アンダースコアで始まるラベルは対象外)
linestyle
ls
str
(offset, on-off-seq)
線種
スタイル備考
'-' (ダッシュ)
'solid'
solid実線
solid line
'--' (ダブルダッシュ)
'dashed'
dashed破線
dashed line
'-.'
'dashdot'
dashdot一点鎖線
dash-dotted line
':' (コロン)
'dotted'
dotted点線
dotted line
'None'
'none'
' ' (半角スペース)
'' (空文字列)
線なし
(offset, on-off-seq)
(offset, on-off-seq)
ユーザ定義
offset:開始位置オフセット
on-off-seq:線のありなしの対
例:二点鎖線
(0, (6.5, 1.5, 1, 1.5, 1, 1.5))
linewidth
lw
float
None
線の幅
orientationstr'vertical'ステップ方向
方向備考
'vertical'垂直方向
'horizontal'水平方向
path_effectsAbstractPathEffect
pickerNone
bool
float
callable
NoneNone:ピッカーイベントなし
bool:ピッカーイベント有無
float:ピッカー有効半径
callable:ピッカーイベント hit(bool), props(dict) = picker(artist, mouseevent)
rasterizedboolラスタライズ(ビットマップ) 描画の強制有無
sketch_params
snapbool
None
スナップ (ピクセル位置補正) の有無
(Agg・MacOSX バックエンドのみサポート)
transformTransform
urllist( str )NoneハイパーリンクURL (SVG のみ対応)
values配列形式ステップの高さ
visiblebool表示有無
zorderfloatZオーダー (大きい方が手前)

設定・グラフパーツ

設定・グラフパーツ の抜粋〔

pyplot.axes.Axes.その他
タイトルsuptitle【タイトル設定 (全体)】
title【タイトル設定】
set_title【タイトル設定】
get_title【タイトル取得】
Axes3D.set_title【タイトル設定】
figure.Figure.suptitle【タイトル設定 (全体)】
figure.SubFigure.suptitle
凡例legend【凡例 設定】3.5 / 3.7 / 3.8
quiverkey【ベクトルの凡例 追加】
figure.Figure.legend【凡例 設定 (全体)】3.7 / 3.8
PathCollection.legend_elements【凡例項目作成】
get_legend【凡例 取得】
get_legend_handles_labels【凡例 取得 (ハンドル・ラベル)】
軸ラベルxlabel【x軸ラベル 設定】3.3
ylabel【y軸ラベル 設定】3.3
set_xlabel【x軸ラベル 設定】3.3
set_ylabel【y軸ラベル 設定】3.3
Axes3D.set_zlabel【z軸ラベル 設定】

get_xlabel【x軸ラベル 取得】
get_ylabel【y軸ラベル 取得】
Axes3D.get_zlabel【z軸ラベル 取得】
figure.Figure.supxlabel【x軸ラベル(全体) 設定】3.43.6
figure.Figure.supylabel【y軸ラベル(全体) 設定】3.43.6
figure.SubFigure.supxlabel
figure.SubFigure.supylabel
projections.polar.PolarAxes.set_rlabel_position【半径ラベルのシータ位置設定】
clabel【等高線ラベル 設定】
bar_label【バーラベル】3.43.7
グリッド線grid【グリッド線 設定】3.5grid【グリッド線 設定】3.5
get_xgridlines【x軸グリッド線 取得】
get_ygridlines【y軸グリッド線 取得】
(Axes3D.grid【3Dグリッド線 取得・設定】)
Axes3D.get_zgridlines【z軸グリッド線 取得】
axis.Axis.grid【軸グリッド線 設定】3.5
axis.Axis.get_gridlines【軸グリッド線 取得】
triplot【三角形分割】
rgrids【放射状グリッド線 取得・設定】
thetagrid【放射状シータグリッド線 取得・設定】
projections.polar.PolarAxes.set_rgrids【放射状グリッド線 設定】
projections.polar.PolarAxes.set_thetagrid【放射状シータグリッド線 設定】
表示範囲xlim【x軸表示範囲 取得・設定】
ylim【y軸表示範囲 取得・設定】
axis【表示範囲等 取得・設定】3.1~3.4 / 3.7
set_xlim【x軸表示範囲 設定】3.1 / 3.6
set_ylim【y軸表示範囲 設定】3.1 / 3.6
get_xlim【x軸表示範囲 取得】
get_ylim【y軸表示範囲 取得】
axis【表示範囲等 取得・設定】3.1~3.4 / 3.7
projections.polar.PolarAxes.set_rlim【極座標範囲 設定】
Axes3D.set_xlim【3D x軸表示範囲 設定】
Axes3D.set_xlim3d【3D x軸表示範囲 設定】
Axes3D.set_ylim【3D y軸表示範囲 設定】
Axes3D.set_ylim3d【3D y軸表示範囲 設定】
Axes3D.set_zlim【3D z軸表示範囲 設定】
Axes3D.set_zlim3d【3D z軸表示範囲 設定】
Axes3D.get_xlim3d【3D x軸表示範囲 取得】
Axes3D.get_ylim3d【3D y軸表示範囲 取得】
Axes3D.get_zlim3d【3D z軸表示範囲 取得】
データ上限・下限set_xbound【x軸データ上限・下限 設定】
set_ybound【y軸データ上限・下限 設定】
get_xbound【x軸データ上限・下限 取得】
get_ybound【y軸データ上限・下限 取得】
projections.polar.PolarAxes.set_rmax【極座標上限 設定】
projections.polar.PolarAxes.set_rmin【極座標下限 設定】
目盛りxticks【x軸目盛り (ラベル) 取得・設定】3.6
yticks【y軸目盛り (ラベル) 取得・設定】3.6
locator_params【目盛り制御】
minorticks_on
minorticks_off
ticklabel_format【目盛りフォーマット設定 (指数形式)】
tick_params【目盛り・グリッド線 外観変更】
set_xticks【x軸目盛り 設定】3.2 / 3.5
set_yticks【y軸目盛り 設定】3.2 / 3.5
Axes3D.set_zticks【z軸目盛り 設定】

set_xticklabels【x軸目盛りラベル 設定】3.3 / 3.5
set_yticklabels【y軸目盛りラベル 設定】3.3 / 3.5
Axes3D.set_zticklabels【z軸目盛りラベル 設定】

get_xticks【x軸目盛り 取得】3.2
get_yticks【y軸目盛り 取得】3.2
Axes3D.get_zticks【z軸目盛り 取得】

get_xticklabels【x軸目盛りラベル 取得】3.3 / 3.6
get_yticklabels【y軸目盛りラベル 取得】3.3 / 3.6
Axes3D.get_zticklabels【z軸目盛りラベル 取得】

get_xmajorticklabels【x軸目盛りラベル 取得 (主)】3.3 / 3.6
get_ymajorticklabels【y軸目盛りラベル 取得 (主)】3.3 / 3.6
get_xminorticklabels【x軸目盛りラベル 取得 (補助)】3.3 / 3.6
get_yminorticklabels【y軸目盛りラベル 取得 (補助)】3.3 / 3.6
get_xticklines
get_yticklines
xaxis_date
yaxis_date
minorticks_on
minorticks_off
ticklabel_format【目盛りフォーマット設定 (指数形式)】
tick_params【目盛り・グリッド線 外観変更】
locator_params【目盛り制御】
fmt_xdata
fmt_ydata
ticker【目盛りモジュール】
axis.Axis.set_ticks【目盛り 設定】
axis.Axis.set_ticklabels【目盛りラベル 設定】
axis.Axis.set_tick_params【目盛り・グリッド線 外観変更】
axis.XAxis.set_ticks_position【x軸目盛り位置 設定】
axis.YAxis.set_ticks_position【y軸目盛り位置 設定】
Axes3D.locator_params【目盛り制御】

axis.Axis.set_major_formatter【フォーマッタ設定 (主)】
axis.Axis.set_minor_formatter【フォーマッタ設定 (補助)】
axis.Axis.set_major_locator【ロケータ設定 (主)】
axis.Axis.set_minor_locator【ロケータ設定 (補助)】
axis.Axis.get_ticklabels【目盛りラベル取得】
axis.Axis.get_majorticklabels【目盛りラベル取得 (主)】
axis.Axis.get_minorticklabels【目盛りラベル取得 (補助)】
axis.Axis.get_major_formatter【フォーマッタ取得 (主)】
axis.Axis.get_minor_formatter【フォーマッタ取得 (補助)】
axis.Axis.get_ticklocs
axis.Axis.get_major_locator【ロケータ取得 (主)】
axis.Axis.get_minor_locator【ロケータ取得 (補助)】
figure.Figure.autofmt_xdate【x軸日付目盛りラベル回転】
axis.Axis.get_tick_params【目盛り・グリッド線 外観取得】3.7
直線
範囲
axhline【水平線 (単一)】3.9
axvline【垂直線 (単一)】
hlines【水平線 (複数)】3.3
vlines【垂直線 (複数)】3.3
axhspan【水平範囲】3.9
axvspan【垂直範囲】3.9
axline【直線】3.3

基本

stairsのサンプル画像

import matplotlib.pyplot as plt

# 初期設定
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = \
    ['Yu Gothic', 'Hiragino Maru Gothic Pro', 'Noto Sans CJK JP']
fig, axs = plt.subplots(
    1, 2,
    figsize=(8, 3),
    tight_layout=True,
)

# グラフ (左)
axs[0].stairs(
    [100, 200, 300, 400],
    [10, 20, 30, 40, 50],
    fill=True,
)
axs[0].set_title('垂直方向 / 塗りつぶしあり')

# グラフ (右)
axs[1].stairs(
    [100, 200, 300, 400],
    [10, 20, 30, 40, 50],
    orientation='horizontal',
    hatch='//',
    linewidth=2,
)
axs[1].set_title('水平方向 / 塗りつぶしパターン指定')

# 表示
plt.show()

データの指定方法

stairsのサンプル画像

import matplotlib.pyplot as plt

# 初期設定
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = \
    ['Yu Gothic', 'Hiragino Maru Gothic Pro', 'Noto Sans CJK JP']
fig, axs = plt.subplots(
    1, 3,
    figsize=(9, 3),
    tight_layout=True,
)

# グラフ (左)
axs[0].stairs(
    [100, 200, 300, 400],
    fill=True,
)
axs[0].set_title("ステップの端の位置 (省略)")

# グラフ (中)
axs[1].stairs(
    [100, 200, 300, 400],
    [10, 20, 30, 40, 50],
    fill=True,
)
axs[1].set_title('ステップの端の位置 (省略なし)')

# グラフ (右)
axs[2].stairs(
    'data-values',
    'data-edges',
    data={
        'data-values': [100, 200, 300, 400],
        'data-edges': [10, 20, 30, 40, 50],
    },
    fill=True,
)
axs[2].set_title('ラベル名指定')

# 表示
plt.show()

線・塗りつぶしの指定方法

stairsのサンプル画像

import matplotlib.pyplot as plt

# 初期設定
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = \
    ['Yu Gothic', 'Hiragino Maru Gothic Pro', 'Noto Sans CJK JP']
fig, axs = plt.subplots(
    1, 2,
    figsize=(6, 3),
    tight_layout=True,
)

# グラフ (左)
axs[0].stairs(
    [100, 200, 300, 400],
    [10, 20, 30, 40, 50],
    alpha=0.5,
    color='blue',
    linewidth=5,
    linestyle='--',
    joinstyle='round',
    capstyle='round',
    hatch='/*',
)
axs[0].set_title('塗りつぶし:なし')

# グラフ (右)
axs[1].stairs(
    [100, 200, 300, 400],
    [10, 20, 30, 40, 50],
    fill=True,
    linewidth=5,
    hatch='xx',
    alpha=0.5,
    edgecolor='blue',
    facecolor='green',
)
axs[1].set_title('塗りつぶし:あり')

# 表示
plt.show()

積み上げ

stairsのサンプル画像

import matplotlib.pyplot as plt
import numpy as np

# 初期設定
fig, ax = plt.subplots(
    figsize=(3, 3),
    tight_layout=True,
)

# データ
edges = [10, 20, 30, 40, 50]
data1 = np.array([10, 20, 30, 40])
data2 = np.array([20, 30, 40, 50])
data3 = np.array([30, 40, 50, 60])

# グラフ
ax.stairs(
    data1,
    edges,
    fill=True,
)
ax.stairs(
    data1 + data2,
    edges,
    baseline=data1,
    fill=True,
)
ax.stairs(
    data1 + data2 + data3,
    edges,
    baseline=data1 + data2,
    fill=True,
)

# 表示
plt.show()

設定・グラフパーツ

stairsのサンプル画像

import matplotlib.pyplot as plt

# 初期設定
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = \
    ['Yu Gothic', 'Hiragino Maru Gothic Pro', 'Noto Sans CJK JP']
fig, axs = plt.subplots(
    1, 2,
    figsize=(6, 3),
    tight_layout=True,
)
# タイトル (全体)
plt.suptitle('タイトル (全体)')

# グラフ (左)
axs[0].stairs(
    [100, 200, 300, 400],
    [10, 20, 30, 40, 50],
    fill=True,
    label='Data 1',
)
axs[0].stairs(
    [200, 400, 600, 800],
    [10, 20, 30, 40, 50],
    fill=True,
    baseline=[100, 200, 300, 400],
    label='Data 2',
)
# タイトル
axs[0].set_title('タイトル (左)')
# 凡例
axs[0].legend(title='凡例', loc='upper left')
# 軸ラベル
axs[0].set_xlabel('x軸ラベル')
axs[0].set_ylabel('y軸ラベル')
# グリッド
axs[0].grid(True)
# 表示範囲
axs[0].set_xlim(0, 60)
axs[0].set_ylim(0, 1000)
# 目盛り
axs[0].set_xticks([0, 10, 20, 30, 40, 50, 60])
axs[0].set_yticks([0, 100, 200, 300, 400, 600, 800])
# 補助線 追加
axs[0].axline((15, 100), (45, 400), alpha=0.5)

# グラフ (右)
axs[1].stairs(
    [100, 200, 300, 400],
    [10, 20, 30, 40, 50],
    fill=True,
    alpha=0.5,
)
# タイトル
axs[1].set_title('タイトル (右)')
# データ上限・下限
axs[1].set_xbound(15, 45)
axs[1].set_ybound(50, 350)
# 目盛り
axs[1].set_xticks([20, 30, 40])
axs[1].set_xticklabels(['X (20)', 'X (30)', 'X (40)'])
axs[1].set_yticks([100, 200, 300])
axs[1].set_yticklabels(['Y (100)', 'Y (200)', 'Y (300)'])
# 水平線・垂直線 追加
axs[1].axhline(125, linestyle='--')
axs[1].axhline(275, linestyle='--')
axs[1].axvline(22.5, linestyle='--')
axs[1].axvline(37.5, linestyle='--')
# 範囲 追加
axs[1].axhspan(
    150, 250,
    alpha=0.4,
    facecolor='lightgreen',
    edgecolor='blue',
)
axs[1].axvspan(
    25, 35,
    alpha=0.4,
    facecolor='lightgreen',
    edgecolor='blue',
)

# 表示
plt.show()