我有7个功能,我想绘制2个功能的所有组合。我想将这些数据可视化,如下所示。我可以通过在matpltlib中的子绘图后添加子绘图来手动完成,但是有一个函数吗?这种情节是否有特殊名称?
谢谢
答案: seaborn.PairGrid http://stanford.edu/~mwaskom/software/seaborn/generated/seaborn.PairGrid.html
答案 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()
但是,您也可以使用"裸" 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()