Help us understand the problem. What is going on with this article?

seabornのFacetGridとfactorplotについて

More than 1 year has passed since last update.

Pythonでのデータ視覚化の際に、seabornのfactorplotやFacetGridをよく用いるが、使い分けがイマイチ覚えられないので、まとめてみる。

seaborn.factorplot

  • 後述のFacetGridとcategorical plotを組み合わせた関数
  • デフォルトではpoint plotを描画するが、"kind"によりbox plot, violin plot, bar plot, strip plotを指定可能
  • グラフ要素どうしの距離が近いほど比較しやすいので、最も重要な比較は"hue"を用いるべき。二番目の比較には定量的な軸を共有すべき(垂直方向に並べるプロットなら"col", 水平方向なら"row")
  • 元のプロット関数を直接使う場合と違い、data frameはlong-formである必要(変数名を示す列と、値を示す列にまとめた形式。pandas.meltで変換可能)

主な引数

x, y, hue : 変数名
data : DataFrame
row, col : gridの作成に用いる変数名(optional)
col_wrap : int(optional)、列数を指定する
kind : {point, bar, count, box, violin, strip}、プロットの種類
share{x,y} : bool(optional)、x軸またはy軸を行内、列内で共有するか

コード例

公式ドキュメントを参照。
https://seaborn.pydata.org/generated/seaborn.factorplot.html

seaborn.FacetGrid

  • FacetGridはPandas DataFrameを特定の構造でmatplotlib figureと結びつけるオブジェクト
  • ある変数の異なる水準で条件付けられた同じ関係を表す複数の軸のプロットを描くために用いられる。グリッドの行、列に変数を対応させ、プロットの要素に異なる色を用いることで、最大で3つの変数による条件づけが可能

<基本的な流れ>
datasetとグリッドを構成する変数でFacetGridオブジェクトを初期化
→ FacetGrid.map()またはFacetGrid.map_dataframe()によりそれぞれのサブセットにプロット関数を適用

主な引数

data : (long-formの)DataFrame
row, col, hue : strings、グリッドの各部に描かれるデータのサブセットを決定する変数
col_wrap : int(optional)、列数を指定する
share{x,y} : bool(optional)、x軸またはy軸を行内、列内で共有するか

コード例

公式ドキュメントを参照。
https://seaborn.pydata.org/generated/seaborn.FacetGrid.html#seaborn.FacetGrid

こちらも参考になる。
https://seaborn.pydata.org/tutorial/categorical.html
https://seaborn.pydata.org/tutorial/axis_grids.html

※ 棒グラフを作成する場合
factorplot()を用いるとfacet上の変数の順序の一致が保証されるので、FacetGridを直接用いるよりも安全。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした