2017-08-01 24 views
2

我正在使用seaborn来绘制一些生物学数据。Seaborn:我只想要一个日志量表

我只想分布对另一个基因(在〜300例表达),而这一切工作的罚款和花花公子与graph = sns.jointplot(x='Gene1',y='Gene2',data=data,kind='reg')

我喜欢的图形给了我一个很好的线性拟合和PearsonR和P值。

One of my graphs.

所有我想要的是画出对数标度,它是这样的基因数据通常表现的方式我的数据。

我已经看过一些在线解决方案,但它们都摆脱了我的PearsonR值或我的线性适合度,或者他们看起来不太好。我对此很陌生,但似乎在日志规模上绘制图表不应该太麻烦。

任何意见或解决方案?

谢谢!

编辑:回复评论,我已经接近我的答案。我现在有一个情节(如下所示),但我需要一个合适的线和做一些统计。现在正在努力,但同时提供的任何答案/建议都非常值得欢迎。

Progress

+0

您尝试并拒绝了哪些解决方案? – LangeHaare

+0

我看着这个:https://stackoverflow.com/questions/26059979/log-log-plot-with-seaborn-jointgrid 但尝试解决方案,我的数据只是一个平坦的线?我不确定哪里出了问题,但它没有我想要的统计数据。 – CalendarJ

+1

您在尝试设置坐标轴之前是否尝试过调用这个坐标? https://stackoverflow.com/a/40633595/8131703 – LangeHaare

回答

1
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),因为这使得图表在短期内更容易缩放和可视化。

相关问题