散射矩阵的熊猫传奇

时间:2017-05-05 09:42:22

标签: python pandas matplotlib

我有一个pandas数据帧,包含3个类和n个特征的数据点。

以下代码生成一个散射矩阵,其中包含对角线中的直方图,数据框中有4个要素。

colums = ['n1','n2','n3','n4']
grr = pd.scatter_matrix(
dataframe[columns], c=y_train, figsize=(15,15), label=['B','N','O'], marker='.',
    hist_kwds={'bins':20}, s=10, alpha=.8, cmap='brg')
plt.legend()
plt.show()
像这样:

Scatter matrix of this dataframe

我遇到的问题是plt.legend()似乎没有用,它根本没有显示任何传说(或者它是微小的' le8'在第二行的第一列几乎看不到......)

我想要的是一个单一的图例,只显示哪个颜色是哪个类。

我已经尝试了所有建议的问题,但没有一个有解决方案。 我还尝试将标签放在图例函数参数中,如下所示:

plt.legend(label=['B','N','O'], loc=1)

但无济于事..

我做错了什么?

1 个答案:

答案 0 :(得分:0)

正如ImportanceOfBeingErnest的答案中所述。散点图从颜色图中选择颜色。但是plt.colorbar()不适用于pd.plotting.scatter_matrix。这是一个简单的解决方法,包括绘制颜色条的图像并将其标记为目标名称。下面,我以sklearn中的虹膜数据集为例:

from sklearn import datasets
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

iris = datasets.load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
_ = pd.plotting.scatter_matrix(df, c=iris.target, figsize=[8,8], s=100, alpha=0.8)

plt.figure()
plt.imshow([np.unique(iris.target)])
_ = plt.xticks(ticks=np.unique(iris.target),labels=iris.target_names)

会生成以下数字

scatter matrix

colorbar