Plotly④(面グラフ)

面グラフ

Plotlyで面グラフを描画するには折れ線グラフや散布図と同じようにScatterクラスを使います。

Scatterクラスの引数 fill“tozeroy”を指定すると、領域を塗りつぶして表示することができます。(10行目)

また、引数 mode“none”を設定すると、線とマーカーが描画されなくなります。(11行目)

[Google Colaboratory]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import numpy as np
import plotly.graph_objects as go

np.random.seed(7)
area_x = np.arange(15)
area_y1, area_y2 = np.random.rand(2, 15) # 一様乱数を生成
area_trace = go.Scatter(x=area_x,
y=area_y1,
name="area1",
fill="tozeroy", # 0からY値まで塗りつぶし,
mode="none", # 線とマーカーを描画しない
fillcolor="mediumslateblue" # 塗りつぶし色
)
area_fig = go.Figure([area_trace])
area_fig.show()

[実行結果]

面グラフ(積み上げ)

面グラフを積み上げるには、複数のtraceをfigureに設定します。

traceが複数ある場合、Scatterクラスの引数fillに“tozeroy”を渡すと同じ領域を塗りつぶしてしまうため、重なった領域の塗りつぶしの色が混合してしまいます。

これを回避するには塗りつぶす領域の範囲をtrace間の値とします。

引数 fill“tonexty”を渡すと、前のtraceからY値までの領域を塗りつぶします。(4行目)

以下のコードでは、2つの要素を面グラフで描画し、2番目の要素の塗りつぶし領域を前の要素のY値からとしています。

[Google Colaboratory]

1
2
3
4
5
6
7
8
9
next_area_trace = go.Scatter(x=area_x,
y=area_y1 + area_y2,
name="area2",
fill="tonexty", # 前のtraceからY値までを塗りつぶし
mode="none",
fillcolor="lightpink"
)
stacked_area_fig = go.Figure([area_trace, next_area_trace])
stacked_area_fig.show()

[実行結果]