ポイントの色がプロットされたデータフレームの列によって定義される散布図のFacetGridを作成したいと思います。ただし、列名よりも色の文字列として解釈されるため、マップするときのc=
パラメータに列名を渡すことができないようですplt.scatter
。
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style='white')
iris = sns.load_dataset('iris')
g = sns.FacetGrid(iris, row='species', size=4)
g.map(plt.scatter, 'sepal_width', 'sepal_length', c='petal_length')
でる:
/home/user/anaconda/lib/python2.7/site-packages/matplotlib/colors.pyc in to_rgba_array(self, c, alpha)
420 result = np.zeros((nc, 4), dtype=np.float)
421 for i, cc in enumerate(c):
--> 422 result[i] = self.to_rgba(cc, alpha)
423 return result
424
/home/user/anaconda/lib/python2.7/site-packages/matplotlib/colors.pyc in to_rgba(self, arg, alpha)
374 except (TypeError, ValueError) as exc:
375 raise ValueError(
--> 376 'to_rgba: Invalid rgba arg "%s"\n%s' % (str(arg), exc))
377
378 def to_rgba_array(self, c, alpha=None):
ValueError: to_rgba: Invalid rgba arg "p"
to_rgb: Invalid rgb arg "p"
could not convert string to float: p
私が期待した結果はからと同じでした plt.scatter(iris.sepal_width, iris.sepal_length, c=iris.petal_length)
で簡単に試しsns.regplot
てみましたが、同じ問題が発生したようです。FacetGridのrow=
またはcol=
パラメーターを指定しない場合c=iris.petal_length
、期待される結果を入力できます。
データが行または列でグループ化され、データポイントがデータフレームの列に従って色付けされるFacetGridを作成する方法はありますか?
DataFrameで列として識別される変数は、プロット関数の位置引数に対応している必要があります。最も簡単な方法は、次の代わりにplt.scatter
署名を作成する小さなラッパー関数を作成するscatter(x, y, c)
ことですscatter(x, y, s, c)
。
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style='white')
iris = sns.load_dataset('iris')
g = sns.FacetGrid(iris, row='species', size=4)
def scatter(x, y, c, **kwargs):
plt.scatter(x, y, c=c, **kwargs)
g.map(scatter, 'sepal_width', 'sepal_length', 'petal_length')
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加