次のようなリストを円グラフで表したい。
バンド | 秒数 |
---|---|
2GHz | 30 |
1.5GHz | 40 |
1.7GHz | 50 |
700MHz | 10 |
800MHz | 20 |
# ラベル
labels = ['2GHz','1.5GHz','1.7GHz','700MHz','800MHz']
# ラベルに対応する値
values = [30,40,50,10,20]
fig = go.Figure()
trace = go.Pie(labels= labels, values= values, textinfo= 'percent+label')
fig.add_trace(trace)
fig.update_layout(width=500, height=500)
fig.show()
大きい順に反時計回りに並べ替えられて描画される。
色を変えてみる。
#色
colors = ['red','blue','yellow','orange','green']
trace = go.Pie(labels= labels, values= values,marker_colors=colors, textinfo= 'percent+label')
表示順は sort, direction, rotation を使用して次のように変更可能。
labels = ['2GHz','1.5GHz','1.7GHz','700MHz','800MHz']
values = [30,40,50,10,20]
fig = make_subplots(
rows=2, cols=2,
specs=[[{"type": "pie"}, {"type": "pie"}],
[{"type": "pie"}, {"type": "pie"}]],
)
trace = go.Pie(labels= labels, values= values, textinfo= 'percent+label')
#同じ円グラフを4箇所に追加する。
fig.add_traces([trace,trace, trace, trace],cols=[1,2,1,2,], rows=[1,1,2,2])
fig.update_layout(width=800, height=800)
#update_traces() を用いて後から変更する。
#左上のグラフはデフォルトのまま
#sort=True, direction='counterclockwise', rotation=0
fig.update_traces(col=1,row=1, title='デフォルト')
#右上のグラフをソート無し、時計回りで表示する
fig.update_traces(col=2,row=1, sort=False, direction='clockwise', title='ソート無、時計回り')
#左下のグラフをソート無し、時計回り、90度回転で表示する
fig.update_traces(col=1,row=2, sort=False, direction='clockwise', rotation=90, title='ソート無、時計回り、90度')
#右下のグラフをソート有り、反時計回り、90度回転で表示する
fig.update_traces(col=2,row=2, sort=True, direction='counterclockwise', rotation=90, title='ソート有、反時計回り、90度')
fig.show()
rotation の動作に少しクセがある。ドキュメントには、
Instead of the first slice starting at 12 o'clock, rotate to some other angle.
(最初のスライスを 12 時から開始するかわりに、他の角度に回転させる)
とある。デフォルトの反時計回り(direction='counterclockwise') の時は1番目と2番目のパイをスライスする角度になっているが、時計回り(direction='clockwise')の時は1番目のパイの始まりの角度になっている。