2017-08-15 134 views
0

我正在做一些EDA使用熊猫和seaborn,这是我所绘制的一组功能的直方图代码:避免overlaping上seaborn地块

skewed_data = pd.DataFrame.skew(data) 
skewed_features =skewed_data.index 

fig, axs = plt.subplots(ncols=len(skewed_features)) 
plt.ticklabel_format(style='sci', axis='both', scilimits=(0,0)) 
for i,skewed_feature in enumerate(skewed_features): 
    g = sns.distplot(data[column]) 
    sns.distplot(data[skewed_feature], ax=axs[i]) 

这是我得到的结果:

enter image description here

不可读,如何避免这个问题?

+0

如果您在绘图后调用'plt.tight_layout()',将会做很多工作。 – mwaskom

回答

1

我知道你是关于数字的布局。但是,您需要先决定如何表示数据。这里有两个选择,你的情况

(1)在一个数字,

(2)多的次要情节的2x2多条线路,每个插曲画一条线。

我并不十分熟悉搜索引擎,但是搜索引擎的绘图基于matplotlib。我可以给你一些基本的想法。

要存档(1),您可以先声明图形和ax,然后将所有行添加到此ax。实施例的代码:

import matplotlib.pyplot as plt 
fig, ax = plt.subplots() 
# YOUR LOOP, use the ax parameter 
for i in range(3) 
    sns.distplot(data[i], ax=ax) 

要存档(2),与上述相同,但具有不同数目的副区,并把你的线在不同的副区。

# Four subplots, 2x2 
fig, axarr = plt.subplots(2,2) 
# YOUR LOOP, use different cell 

你可以检查matplotlib subplots demo。做一个好的可视化是一项非常艰巨的工作。有太多的文件要阅读。检查matplotlibseaborn的图库是了解如何实现某些类型可视化的好方法。

谢谢。