plotly
前回、HTML上でインタラクティブなグラフ描写ができるライブラリplotlyで描写できるグラフの種類を紹介しました。
今回はScatter(折れ線グラフ、散布図)で複数のデータを表示する方法、そしてその凡例の表示非表示をする方法を試していきます。
また前回、Scatterは折れ線グラフだけでしたが、今回は散布図の表示も行ってみましょう。
ということでまずはScatterで複数のデータを表示する方法です。
Scatterで複数のデータを表示する方法
最初に前回行った一つのグラフを表示する方法のおさらいです。
import random
import plotly.graph_objects as go
data_points = 100
x_val = [i for i in range(data_points)]
y1_val = [random.randrange(100) for _ in range(data_points)]
graph1 = go.Scatter(x=x_val,y=y1_val)
fig = go.Figure(data=graph1)
with open('./plotly3-1.txt', 'w') as f:
f.write(fig.to_html(include_plotlyjs='cdn',full_html=False))
実行結果
前回同様、100個の座標点をランダムで作成し、グラフ化しています。
次に2つのデータをプロットしてみましょう。
import random
import plotly.graph_objects as go
data_points = 100
x_val = [i for i in range(data_points)]
y1_val = [random.randrange(100) for _ in range(data_points)]
y2_val = [random.randrange(100) for _ in range(data_points)]
graph1 = go.Scatter(x=x_val,y=y1_val)
graph2 = go.Scatter(x=x_val,y=y2_val)
graph = [graph1, graph2]
fig = go.Figure(data=graph)
with open('./plotly3-2.txt', 'w') as f:
f.write(fig.to_html(include_plotlyjs='cdn',full_html=False))
実行結果
2つのグラフがプロットされました。
複数のグラフをプロットするにあたって、重要なのはこの部分。
graph1 = go.Scatter(x=x_val,y=y1_val)
graph2 = go.Scatter(x=x_val,y=y2_val)
graph = [graph1, graph2]
fig = go.Figure(data=graph)
それぞれのグラフを「go.Scatter(x=X値のリスト, y=Y値のリスト)」で作成しておいて、その後、それらをリストにまとめます(graph = [graph1, graph2])。
そのまとめたグラフを使って、図を描写する(fig = go.Figure(data=graph))という形です。
もちろん3つになっても同様の方法でグラフを追加できます。
import random
import plotly.graph_objects as go
data_points = 100
x_val = [i for i in range(data_points)]
y1_val = [random.randrange(100) for _ in range(data_points)]
y2_val = [random.randrange(100) for _ in range(data_points)]
y3_val = [random.randrange(100) for _ in range(data_points)]
graph1 = go.Scatter(x=x_val,y=y1_val)
graph2 = go.Scatter(x=x_val,y=y2_val)
graph3 = go.Scatter(x=x_val,y=y3_val)
graph = [graph1, graph2, graph3]
fig = go.Figure(data=graph)
with open('./plotly3-3.txt', 'w') as f:
f.write(fig.to_html(include_plotlyjs='cdn',full_html=False))
凡例にそれぞれのデータの名前をつける
複数のグラフが表示できましたが、それぞれのプロットに名前が付いていないため、凡例内に書かれている名前が「trace 0」、「trace 1」、「trace 2」になってしまっています。
それぞれのプロットに名前をつける場合は、go.Scatterのオプションに「name」を追加します。
import random
import plotly.graph_objects as go
data_points = 100
x_val = [i for i in range(data_points)]
y1_val = [random.randrange(100) for _ in range(data_points)]
y2_val = [random.randrange(100) for _ in range(data_points)]
graph1 = go.Scatter(x=x_val,y=y1_val, name='GRAPH1')
graph2 = go.Scatter(x=x_val,y=y2_val, name='GRAPH2')
graph = [graph1, graph2]
fig = go.Figure(data=graph)
with open('./plotly3-4.txt', 'w') as f:
f.write(fig.to_html(include_plotlyjs='cdn',full_html=False))
凡例に指定した名前が表示されました。
散布図を表示する方法
Scatterを使って、折れ線グラフではなく、散布図を表示するには、go.Scatterのオプションに「mode=’markers’」を追加します。
import random
import plotly.graph_objects as go
data_points = 100
x_val = [i for i in range(data_points)]
y1_val = [random.randrange(100) for _ in range(data_points)]
y2_val = [random.randrange(100) for _ in range(data_points)]
graph1 = go.Scatter(x=x_val,y=y1_val, name='GRAPH1', mode='markers')
graph2 = go.Scatter(x=x_val,y=y2_val, name='GRAPH2', mode='markers')
graph = [graph1, graph2]
fig = go.Figure(data=graph)
with open('./plotly3-5.txt', 'w') as f:
f.write(fig.to_html(include_plotlyjs='cdn',full_html=False))
実行結果
また「mode=’lines+markers’」にすると点を持った折れ線グラフになります。
import random
import plotly.graph_objects as go
data_points = 100
x_val = [i for i in range(data_points)]
y1_val = [random.randrange(100) for _ in range(data_points)]
y2_val = [random.randrange(100) for _ in range(data_points)]
graph1 = go.Scatter(x=x_val,y=y1_val, name='GRAPH1', mode='lines+markers')
graph2 = go.Scatter(x=x_val,y=y2_val, name='GRAPH2', mode='lines+markers')
graph = [graph1, graph2]
fig = go.Figure(data=graph)
with open('./plotly3-6.txt', 'w') as f:
f.write(fig.to_html(include_plotlyjs='cdn',full_html=False))
実行結果
Barで複数のデータを表示する方法
次にBar(棒グラフ)で複数のグラフを表示する方法を見ていきます。
Barでの複数のデータを表示する方法は先ほどのScatterで複数のグラフを表示する方法と同じです。
ということで「go.Scatter」を「go.Bar」に変えてみましょう。
import random
import plotly.graph_objects as go
data_points = 100
x_val = [i for i in range(data_points)]
y1_val = [random.randrange(100) for _ in range(data_points)]
y2_val = [random.randrange(100) for _ in range(data_points)]
graph1 = go.Bar(x=x_val,y=y1_val, name='GRAPH1')
graph2 = go.Bar(x=x_val,y=y2_val, name='GRAPH2')
graph = [graph1, graph2]
fig = go.Figure(data=graph)
with open('./plotly3-7.txt', 'w') as f:
f.write(fig.to_html(include_plotlyjs='cdn',full_html=False))
実行結果
これで棒グラフで複数のデータを表示することができました。
次回はScatterを例にタイトルを表示したり、フォントや色、位置を設定する方法を試していきましょう。
ではでは今回はこんな感じで。
コメント