Plotly-box-violin-and-contour-plot

提供:Dev Guides
移動先:案内検索

Plotly-ボックスプロットバイオリンプロットとコンタープロット

この章では、ボックスプロット、バイオリンプロット、コンタープロット、矢筒プロットなど、さまざまなプロットについて詳しく説明します。 最初に、ボックスプロットのフォローから始めます。

箱ひげ図

ボックスプロットは、最小値、第1四分位数、中央値、第3四分位数、および*最大値*を含む一連のデータの概要を表示します。 ボックスプロットでは、最初の四分位から3番目の四分位までのボックスを描画します。 垂直線が中央のボックスを通過します。 四分位数の上位と下位の外側の変動性を示すボックスから垂直に伸びる線は、ひげと呼ばれます。 したがって、箱ひげ図は、箱ひげ図と*ひげ図*とも呼ばれます。 ウィスカーは各四分位から最小または最大になります。

ボックスプロット

ボックスチャートを描画するには、* go.Box()*関数を使用する必要があります。 データ系列は、xまたはyパラメータに割り当てることができます。 したがって、箱ひげ図は水平または垂直に描画されます。 次の例では、特定の会社のさまざまな支社の売上高が横型ボックスプロットに変換されます。 最小値と最大値の中央値を示します。

trace1 = go.Box(y = [1140,1460,489,594,502,508,370,200])
data = [trace1]
fig = go.Figure(data)
iplot(fig)

同じの出力は次のようになります-

BoxPointsパラメータ

  • go.Box()*関数には、ボックスプロットの外観と動作を制御する他のさまざまなパラメーターを指定できます。 その1つがボックス平均パラメーターです。

    *boxmean* パラメーターはデフォルトでtrueに設定されています。 その結果、ボックスの基になる分布の平均は、ボックス内の破線として描画されます。 sdに設定すると、分布の標準偏差も描画されます。
    *boxpoints* パラメーターは、デフォルトでは " *outliers* "と同じです。 ひげの外側にあるサンプルポイントのみが表示されます。 「疑わしい異常値」の場合、異常値ポイントが表示され、4 "Q1-3" Q3未満または4 "Q3-3" Q1より大きいポイントが強調表示されます。 「False」の場合、ボックスのみが表示され、サンプルポイントはありません。

次の例では、*ボックストレース*が標準偏差と外れ値ポイントで描画されています。

trc = go.Box(
   y = [
      0.75, 5.25, 5.5, 6, 6.2, 6.6, 6.80, 7.0, 7.2, 7.5, 7.5, 7.75, 8.15,
      8.15, 8.65, 8.93, 9.2, 9.5, 10, 10.25, 11.5, 12, 16, 20.90, 22.3, 23.25
   ],
   boxpoints = 'suspectedoutliers', boxmean = 'sd'
)
data = [trc]
fig = go.Figure(data)
iplot(fig)

同じの出力は以下に記載されています-

ボックストレース

バイオリンプロット

バイオリンプロットはボックスプロットに似ていますが、異なる値でのデータの確率密度も表示される点が異なります。 バイオリンプロットには、標準の箱ひげ図のように、データの中央値のマーカーと四分位範囲を示す箱が含まれます。 このボックスプロットには、カーネル密度の推定がオーバーレイされています。 ボックスプロットと同様に、バイオリンプロットは、異なる「カテゴリ」にわたる変数分布(またはサンプル分布)の比較を表すために使用されます。

バイオリンプロットは、プレーンボックスプロットよりも有益です。 実際、箱ひげ図は平均/中央値および四分位範囲などの要約統計量のみを表示しますが、バイオリンプロットは*データの完全な分布*を表示します。

Violinトレースオブジェクトは、 graph_objects モジュールの* go.Violin()関数によって返されます。 基礎となるボックスプロットを表示するには、 *boxplot_visible 属性をTrueに設定します。 同様に、 meanline_visible プロパティをtrueに設定すると、サンプルの平均に対応する線がバイオリン内に表示されます。

次の例は、プロトリの機能を使用してバイオリンプロットを表示する方法を示しています。

import numpy as np
np.random.seed(10)
c1 = np.random.normal(100, 10, 200)
c2 = np.random.normal(80, 30, 200)
trace1 = go.Violin(y = c1, meanline_visible = True)
trace2 = go.Violin(y = c2, box_visible = True)
data = [trace1, trace2]
fig = go.Figure(data = data)
iplot(fig)

出力は次のとおりです-

ヴァイオリンプロット

等高線図

2D等高線図は、2D数値配列zの等高線を示します。 zの isovalues の補間された線。 2つの変数の関数の等高線は、関数が一定の値を持つ曲線であり、曲線は同じ値の点を結合します。

  • Z = f(X、Y)となるような2つの入力 *XY の関数として値Zがどのように変化するかを確認する場合は、等高線図が適切です。 2変数の関数の等高線または等値線は、関数が一定の値を持つ曲線です。

独立変数xとyは通常、meshgridと呼ばれる通常のグリッドに制限されます。 numpy.meshgridは、x値の配列とy値の配列から長方形のグリッドを作成します。

まず、Numpyライブラリの* linspace()関数を使用して、x、y、zのデータ値を作成します。 x値とy値から*メッシュグリッド*を作成し、 *x2 + y2 の平方根からなるz配列を取得します

*graph_objects* モジュールに* go.Contour()*関数があり、x、 *y* 、 *z* 属性を取得します。 以下のコードスニペットは、上記のように計算されたx、 *y* 、および *z* 値の等高線図を表示します。
import numpy as np
xlist = np.linspace(-3.0, 3.0, 100)
ylist = np.linspace(-3.0, 3.0, 100)
X, Y = np.meshgrid(xlist, ylist)
Z = np.sqrt(X**2 + Y**2)
trace = go.Contour(x = xlist, y = ylist, z = Z)
data = [trace]
fig = go.Figure(data)
iplot(fig)

出力は次のとおりです-

等高線図

等高線図は、次のパラメータの1つ以上でカスタマイズできます-

  • 転置(ブール値)-zデータを転置します。

    *xtype* (または *ytype* )が "array"と等しい場合、x/y座標は "x"/"y"で与えられます。 「スケーリング」されている場合、x座標は「x0」と「 *dx* 」で指定されます。
  • connectgaps パラメーターは、zデータのギャップを埋めるかどうかを決定します。

  • ncontours パラメータのデフォルト値は15です。 実際のコンター数は、「ncontours」の値以下になるように自動的に選択されます。 `autocontour`が" True "の場合にのみ効果があります。

等高線のタイプはデフォルトで「 levels 」なので、データは複数のレベルが表示された等高線図として表されます。 constrain の場合、データは operation および value パラメータで指定されたように無効な領域が陰影付きの制約として表されます。

*showlines* -等高線を描画するかどうかを決定します。
*zauto* はデフォルトで *True* であり、カラードメインが入力データ(ここでは `z`内)または` * *zmin*  *`と`*  *zmax* で設定された境界に関して計算されるかどうかを決定します *`ユーザーが` zmin`と `zmax`を設定すると、デフォルトは`*  *False* * `になります。

矢筒プロット

震えプロットは*速度プロット*とも呼ばれます。 速度ベクトルは、点(x、y)に成分( u、v )を持つ矢印として表示されます。 矢筒プロットを描画するために、Plotlyの figure_factory モジュールで定義された* create_quiver()*関数を使用します。

PlotlyのPython APIには、Plotlyのオープンソースグラフライブラリである plotly.js にはまだ含まれていない独自のチャートタイプを作成する多くのラッパー関数を含むFigureファクトリモジュールが含まれています。

create_quiver()関数は次のパラメータを受け入れます-

  • x -矢印の位置のx座標
  • y -矢印の位置のy座標
  • u −矢印ベクトルのxコンポーネント
  • v -矢印ベクトルのyコンポーネント
  • scale -矢印のサイズをスケーリングします
  • arrow_scale -矢じりの長さ。
  • angle -矢印の角度。

次のコードは、Jupyter Notebookで簡単な矢筒プロットをレンダリングします-

import plotly.figure_factory as ff
import numpy as np
x,y = np.meshgrid(np.arange(-2, 2, .2), np.arange(-2, 2, .25))
z = x*np.exp(-x**2 - y**2)
v, u = np.gradient(z, .2, .2)

# Create quiver figure
fig = ff.create_quiver(x, y, u, v,
scale = .25, arrow_scale = .4,
name = 'quiver', line = dict(width = 1))
iplot(fig)

コードの出力は次のとおりです-

Quiver Plot