Python:2D散点图的网格(seaborn.PairGrid)

时间:2016-01-19 15:12:38

标签: python

我有7个功能,我想绘制2个功能的所有组合。我想将这些数据可视化,如下所示。我可以通过在matpltlib中的子绘图后添加子绘图来手动完成,但是有一个函数吗?这种情节是否有特殊名称?

谢谢

答案: seaborn.PairGrid http://stanford.edu/~mwaskom/software/seaborn/generated/seaborn.PairGrid.html

enter image description here

1 个答案:

答案 0 :(得分:2)

您正在寻找的内容通常称为" pairplot"。对于诸如此类的专业统计图,一个很好的选择是seaborn,这是matplotlib的一个包装,专注于统计绘图。作为使用seaborn.pairplot

的示例
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# Generate Data.
nobs, nvars = 100, 5
data = np.random.random((nobs, nvars))
columns = ['Variable {}'.format(i) for i in range(1, nvars + 1)]
df = pd.DataFrame(data, columns=columns)

# Make a pairplot using Seaborn
sns.pairplot(df)
plt.show()

enter image description here

但是,您也可以使用"裸" matplotlib。举个简单的例子:

import numpy as np
import matplotlib.pyplot as plt

# Generate Data.
nobs, nvars = 100, 5
data = np.random.random((nobs, nvars))
columns = ['Variable {}'.format(i) for i in range(1, nvars + 1)]

# Make a pairplot:
fig, axes = plt.subplots(ncols=nvars, nrows=nvars, sharex='col', sharey='row')
for (i, j), ax in np.ndenumerate(axes):
    if i == j:
        ax.annotate(columns[i], (0.5, 0.5), xycoords='axes fraction',
                    ha='center', va='center', size='large')
    else:
        ax.scatter(data[:,i], data[:,j], color='lightblue')
    ax.locator_params(nbins=6, prune='both')

plt.show()

enter image description here