NG.*_*NG. 6 python matplotlib pandas
我有一个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()
Run Code Online (Sandbox Code Playgroud)
像这样:
我遇到的问题是plt.legend()似乎不起作用,它根本没有显示任何图例(或者它是第二行第一列中几乎看不见的小'le8')
我想要的是一个单一的图例,它只显示哪个颜色是哪个类.
我已经尝试了所有建议的问题,但没有一个有解决方案.我还尝试将标签放在图例功能参数中,如下所示:
plt.legend(label=['B','N','O'], loc=1)
Run Code Online (Sandbox Code Playgroud)
但无济于事..
我究竟做错了什么?
熊猫scatter_matrix是几个matplotlib scatter图的包装。参数将传递给scatter函数。但是,散点图通常是与颜色图一起使用,而不是与带有离散标记点的图例一起使用,因此没有可用的参数来自动创建图例。
很抱歉,您必须手动创建图例。为此,您可以使用matplotlib的plot函数(具有空数据)从散点图中创建点,并将其添加为图例的句柄。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["figure.subplot.right"] = 0.8
v= np.random.rayleigh(size=(30,5))
v[:,4] = np.random.randint(1,4,size=30)/3.
dataframe= pd.DataFrame(v, columns=['n1','n2','n3','n4',"c"])
columns = ['n1','n2','n3','n4']
grr = pd.scatter_matrix(
dataframe[columns], c=dataframe["c"], figsize=(7,5), label=['B','N','O'], marker='.',
hist_kwds={'bins':20}, s=10, alpha=.8, cmap='brg')
handles = [plt.plot([],[],color=plt.cm.brg(i/2.), ls="", marker=".", \
markersize=np.sqrt(10))[0] for i in range(3)]
labels=["Label A", "Label B", "Label C"]
plt.legend(handles, labels, loc=(1.02,0))
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4468 次 |
| 最近记录: |