qnqn雑記

個人の学習ログの域は超えておりませんので間違っている可能性があり確かな情報を求められる場合は専門書等々に当たってください。体系的な情報については管理者ホームページへ(https://qnqn1927.github.io/)

plotly

plotly

plotlyの素晴らしさに惚れたので備忘

f:id:qnqn1927:20201204090424p:plain

f:id:qnqn1927:20201204090509p:plain

こうやって出力されたグラフをぐりぐり動かせたりします。

便利そうなグラフ垂れ流し

import pandas as pd
import numpy as np
import plotly.express as px
import plotly.graph_objects as go
import plotly.figure_factory as ff

アヤメのデータを使います。

# アヤメのデータセットを格納
df = px.data.iris()
df
# (萼とは、植物用語の一つで、花冠の外側の部分のこと)
# sepal_length: 萼(がく)片の長さ
# sepal_width: 萼(がく)片の幅
# petal_length: 花弁の長さ
# petal_width: 花弁の幅
# species: アヤメの種別
# species_id: アヤメの種別ID

f:id:qnqn1927:20201204085525p:plain

# 散布図の表示
fig = px.scatter(df, x="sepal_width", y="sepal_length")
fig.show()

f:id:qnqn1927:20201204085628p:plain

# 色づけ、マーカーサイズを調整、ツールチップに項目追加
fig = px.scatter(
  df,
  x="sepal_width",
  y="sepal_length",
  color="species", #種別ごとに色づけ
  size='petal_length', #花弁の長さをマーカーサイズの大きさに反映
  hover_data=['petal_width'] #ツールチップに花弁の幅を追加
)
fig.show()

f:id:qnqn1927:20201204085658p:plain

# 色づけ、マーカーサイズを調整、ツールチップに項目追加
fig = go.Figure(data=go.Scatter(
  x=df["sepal_width"],
  y=df["sepal_length"],
  # hover_data=['petal_width'], #ツールチップに花弁の幅を追加
  mode='markers',
    marker=dict(
        size=16,
        color=df["petal_length"], # 花弁の長さによって色分け
        colorscale='Viridis', # plotly colorscalesのひとつを設定
        showscale=True
    )
))
fig.show()

f:id:qnqn1927:20201204085725p:plain

# 散布図行列
fig = px.scatter_matrix(df)
fig.show()

f:id:qnqn1927:20201204085802p:plain

# 色付き散布図行列
fig = px.scatter_matrix(df,
    dimensions=["sepal_width", "sepal_length", "petal_width", "petal_length"],
    color="species")
fig.show()

f:id:qnqn1927:20201204085827p:plain

# ヒートマップ
fig = px.imshow(df.corr())
fig.show()

f:id:qnqn1927:20201204085850p:plain

# 注釈付きヒートマップ
z = df.corr()
fig = ff.create_annotated_heatmap(
    z.values,
    x=z.columns.tolist(),
    y=z.index.tolist(),
    annotation_text=np.around(z.values, decimals=2)
    )
fig.show()

f:id:qnqn1927:20201204090050p:plain

# 3D散布図
fig = px.scatter_3d(
    df,
    x='sepal_length',
    y='sepal_width',
    z='petal_width',
    color='species')
fig.show()

f:id:qnqn1927:20201204090116p:plain

# 色付き、記号分け
fig = px.scatter_3d(
    df,
    x='sepal_length',
    y='sepal_width',
    z='petal_width',
    color='petal_length',
    symbol='species'
    )
fig.show()

f:id:qnqn1927:20201204090220p:plain

# 様々な調整
fig = go.Figure(data=[go.Scatter3d(
    x=df['sepal_length'],
    y=df['sepal_width'],
    z=df['petal_width'],
    mode='markers',
    marker=dict(
        size=4,
        color=df['petal_length'],
        colorscale='Viridis',
        opacity=0.8
    )
)])
fig.update_layout(
    scene = dict(xaxis_title='sepal_length',
                 yaxis_title='sepal_width',
                 zaxis_title='petal_width'),
    margin=dict(l=0, r=0, b=0, t=0))
fig.show()

f:id:qnqn1927:20201204090257p:plain