Python 使用pandas在同一图表中生成多个散点矩阵图
我有两个列名称相同的数据帧。我想制作成对图散点图,以了解变量如何相互作用。我想用与第二个矩阵不同的颜色绘制第一个数据帧。这可能吗?默认情况下,Python 使用pandas在同一图表中生成多个散点矩阵图,python,pandas,Python,Pandas,我有两个列名称相同的数据帧。我想制作成对图散点图,以了解变量如何相互作用。我想用与第二个矩阵不同的颜色绘制第一个数据帧。这可能吗?默认情况下,scatter\u matrix函数会覆盖上一个绘图 为什么我的第一个生成的绘图会被覆盖?如何使用scatter\u matrix函数同时显示两个数据帧 import pandas as pd import numpy as np import matplotlib.pyplot as plt dat = pd.DataFrame({'x%i' % ii:
scatter\u matrix
函数会覆盖上一个绘图
为什么我的第一个生成的绘图会被覆盖?如何使用scatter\u matrix
函数同时显示两个数据帧
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
dat = pd.DataFrame({'x%i' % ii: np.random.uniform(-1, 1, 100) for ii in range(3)})
dat2 = pd.DataFrame({'x%i' % ii: np.random.uniform(0, 1, 100) for ii in range(3)})
ax = pd.plotting.scatter_matrix(dat, c='orange')
pd.plotting.scatter_matrix(dat2, c='k')
# pd.plotting.scatter_matrix(dat2, c='k', ax=ax) # results in error
plt.savefig('example')
(我想要的解决方案应该有两种不同的点颜色,一组从0到1,另一组从-1到1。)中似乎存在一个问题,
scatter_matrix()
函数在技术上可以处理通过ax=ax
选项传递的轴的2D数组,但是调用图,axes=_子图(naxes=naxes,figsize=figsize,ax=ax,squence=False)
似乎将此轴数组展平为1D列表,随后在代码中与ax=axs[i,j]
不兼容。也许应该为此创建一个bug
除此之外,我建议您编写自己的代码(松散地基于原始的scatter\u matrix()
),以便更好地控制正在绘制的内容。
在以下示例中,您可以看到如何对实际打印的内容(例如图形大小和边距、打印对象的颜色等)进行更精确的控制:
收益率:
如果您愿意使用另一个名为
seaborn
的库,并且如果我理解正确,则可以轻松完成。您只需concat
两个数据帧并创建一个列作为hue
,并在图例中使用您想要的名称
import seaborn as sns
sns.pairplot(pd.concat([dat.assign(hue='dat'),
dat2.assign(hue='dat2')]),
hue='hue',
diag_kind='hist',
palette=['orange', 'k'])
注意:在这种情况下,我发现直方图中的对角线看起来不太好,我宁愿使用
'kde'
而不是'hist'
作为参数diag_kind
,但这取决于您想要什么。我运行了提供给我的代码。绘制了两个图形,顶部和底部,顶部用橙色绘制,底部用黑色绘制我是罗。
import seaborn as sns
sns.pairplot(pd.concat([dat.assign(hue='dat'),
dat2.assign(hue='dat2')]),
hue='hue',
diag_kind='hist',
palette=['orange', 'k'])