Plotly Scatter(散布図・折れ線グラフ)のモード設定

plotly使い方

 Plotly でグラフを描く上で、一番使うのではないか?というのがこの記事で紹介する Scatterです。
Scatterを直訳すると 散布図となるので、そんなに使うの??と思うかもしれませんが、実はモードを切り替えることで、折れ線グラフも書けたりできます!
その他にも設定を変更することでバブルチャートやエリアチャートなどを描けるのでそれを考えると、Scatter でカバーできる範囲が大きいことがわかりますね!
 この記事では、Scatterのオプションの中で Mode を設定する方法や、テキストも合わせて表示する方法などをまとめていきます!

スポンサーリンク

散布図・折れ線グラフ

Scatter のオプションとして、覚えておくといい3つのことは、以下のことです。

  • mode = "lines" : 折れ線グラフ
  • mode = "markers" : 散布図
  • mode = "text" : テキストを表示 ( text については次節で説明します)

 グラフの書き方については Plotly共通のグラフの書き方!(add_trace,update_layout), Plotly で描けるグラフ一覧!! でまとめたので、そちらも参照してもらえたらと思いますが、散布図の基本としては、下のようなコードで描けると紹介しました!
 そうすると、6行目にmodeというオプションがあると思うのですが、ここのオプションについてまとめていきます!

import plotly.graph_objects as go
fig = go.Figure() # 1 

fig.add_trace(    #2. グラフを追加・記述する
    go.Scatter(x = "x座標", y = "y座標",
                  mode = 'モード', # 'lines'など
                  name = 'ラベル')
)

fig.show() #4.グラフの描画

 

折れ線グラフ (lines)

mode = 'lines'

散布図 (markers)

mode = 'markers'

プロット付き折れ線グラフ (lines + markers)

 ここまで、lines, markers という2つのmodeを紹介してきましたが、それぞれ線と点を表すプロットでした。つまり、折れ線を書きながらプロット点も表示したいという時は、linesとmarkersを組み合わせて、 'lines + markers' として設定することができます!

mode = 'lines+markers'

サンプルコード

import plotly.graph_objects as go

# データ準備
import pandas as pd  
import plotly.express as px
df = px.data.gapminder()
asia_df = df[df['continent']=='Asia']

# グラフの描画
fig = go.Figure()
for country in  asia_df['country'].unique()[:3]:
    plot_df = asia_df[asia_df['country']==country]
    fig.add_trace(
        go.Scatter(x = plot_df['year'],
                   y = plot_df['lifeExp'],
                  name = country,
                  mode = 'lines' #ここの部分のモードを変更!
        )
    )
fig.show()

スポンサーリンク

グラフに文字を追加表示!

 アジアの国・地域について、横軸を 人口データ、縦軸を 平均寿命としたグラフを mode = 'markers'として散布図を描くと下の図のようになります!

 これだけだと、どこの国かわかりませんよね? ちなみに、みなさん上の図の (1.110396B.648)の国がどこの国かを調べたいときには、どのようにしますか??

 Plotlyでは、2つの方法があるので、それぞれ話していきます!
 <完成目標図>

オプション text

go.Scatter 関数の中にオプションとして、

text = "表示させたいカラム・要素"

とすることで、カーソルをあわせたときに textに設定したカラム・要素が表示されるようになります。

グラフ上に表示

 グラフに表示させる際には、先ほどのmodeに "+text"で組み合わせることで表示させることができます!

mmode = 'markers+text' #例

 

表示位置のオプション (textpositon)

 同じくgo.Scatter()関数内で、textpositionを設定することで、上で設定したtextを点から見てどの位置に表示させるかを設定することができます。

textposition="top center"     #真上
textposition="bottom center"  #真下

サンプルコード

import plotly.graph_objects as go

# データ準備
import pandas as pd  
import plotly.express as px
df = px.data.gapminder()
asia_df = df[df['continent']=='Asia']
asia_2007_df = asia_df[asia_df['year']==2007]

# グラフの描画
fig = go.Figure()
fig.add_trace(
    go.Scatter(
        x = asia_2007_df['pop'],
        y = asia_2007_df['lifeExp'],
        mode = 'markers+text',
        text =  asia_2007_df['country'],
        textposition="top center"
    )
)
fig.update_layout(
    xaxis_title = 'population',
    yaxis_title = 'lifeExp'
)

fig.show()

コメント

タイトルとURLをコピーしました