【问题标题】:Plot joint distribution绘制联合分布
【发布时间】:2015-01-03 13:26:07
【问题描述】:

我有一个 pandas 数据集,其中包含一个整数和一个浮点值:

>>> df2[['AGE_REF', 'RETSURV']].dtypes
AGE_REF      int64
RETSURV    float64
dtype: object

我想使用 pandas 绘制联合分布。我没有看到一种简单的 pandas 可视化联合分布的方法,但我偶然发现了seaborn。所以我尝试调整我已经找到的代码:

>>> import seaborn as sns
>>> sns.jointplot('AGE_REF', "RETSURV", df2,
              kind="hex")
Traceback (most recent call last):
  File "<input>", line 2, in <module>
  File "/usr/local/lib/python2.7/site-packages/seaborn/distributions.py", line 969, in jointplot
    gridsize = int(np.mean([x_bins, y_bins]))
OverflowError: cannot convert float infinity to integer

我找到了一个相关的bug report,所以我尝试按照那里的解决方法 - 没有成功:

>>> sns.jointplot('AGE_REF', "RETSURV", df2,
              kind="hex", marginal_kws={"bins": 10})
Traceback (most recent call last):
  File "<input>", line 2, in <module>
  File "/usr/local/lib/python2.7/site-packages/seaborn/distributions.py", line 969, in jointplot
    gridsize = int(np.mean([x_bins, y_bins]))
OverflowError: cannot convert float infinity to integer

【问题讨论】:

    标签: python matplotlib pandas seaborn


    【解决方案1】:

    默认的 hexbin gridsize 使用与直方图相同的参考规则计算,因此如果您的数据以某种方式违反这些假设,您也需要直接设置:

    sns.jointplot(x, y, kind="hex",
                  joint_kws={"gridsize": 10},
                  marginal_kws={"bins": 10})
    

    【讨论】:

      猜你喜欢
      • 2013-09-14
      • 1970-01-01
      • 1970-01-01
      • 2021-04-10
      • 2014-12-18
      • 2015-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多