web-dev-qa-db-ja.com

Seaborn:対数スケールが欲しい

生物学のデータをプロットするためにseabornを使用しています。

私は、ある遺伝子を別の遺伝子に対して分布させたいだけです(約300人の患者での発現)。これは、すべてうまく機能し、graph = sns.jointplot(x='Gene1',y='Gene2',data=data,kind='reg')でうまくいきます。

私はグラフが私に素晴らしい線形適合とピアソンRとP値を与えるのが好きです。

One of my graphs.

私が欲しいのは、データを対数スケールでプロットすることだけです。これは、そのような遺伝子データが通常表現される方法です。

私はいくつかのソリューションをオンラインで見てきましたが、それらはすべて私のPearsonR値または私の線形適合を取り除いてしまうか、見た目があまり良くありません。私はこれが初めてですが、対数スケールでのグラフ化はそれほど面倒ではないようです。

コメントや解決策はありますか?

ありがとう!

編集:コメントに応じて、私は私の答えに近づきました。これでプロット(下に表示)ができましたが、適合線といくつかの統計を行う必要があります。今はそれに取り組んでいますが、それまでの回答/提案は大歓迎です。

Progress

12
julianstanley
_mybins=np.logspace(0, np.log(100), 100)

g = sns.JointGrid(data1, data2, data, xlim=[.5, 1000000],
                  ylim=[.1, 10000000])
g.plot_marginals(sns.distplot, color='blue', bins=mybins)
g = g.plot(sns.regplot, sns.distplot)
g = g.annotate(stats.pearsonr)

ax = g.ax_joint
ax.set_xscale('log')
ax.set_yscale('log')

g.ax_marg_x.set_xscale('log')
g.ax_marg_y.set_yscale('log')
_

これはうまくいきました。最後に、テーブルの値をlog(x)に変換することにしました。これにより、グラフのスケーリングと短期間の視覚化が容易になります。

7
CalendarJ