【Python基礎】plotlyでHTML上でのグラフ表示:ScatterやBarで複数のデータを並べる方法とScatterで散布図を表示する方法

  • URLをコピーしました!
目次

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を例にタイトルを表示したり、フォントや色、位置を設定する方法を試していきましょう。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次