我有一个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()
像这样:
我遇到的问题是plt.legend()似乎没有用,它根本没有显示任何传说(或者它是微小的' le8'在第二行的第一列几乎看不到......)
我想要的是一个单一的图例,只显示哪个颜色是哪个类。
我已经尝试了所有建议的问题,但没有一个有解决方案。 我还尝试将标签放在图例函数参数中,如下所示:
plt.legend(label=['B','N','O'], loc=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)
会生成以下数字