Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何转换散布中c变量(来自matplotlib)的值?_Python_Matplotlib - Fatal编程技术网

Python 如何转换散布中c变量(来自matplotlib)的值?

Python 如何转换散布中c变量(来自matplotlib)的值?,python,matplotlib,Python,Matplotlib,我使用matplotlib Python库创建PCA绘图,根据类值(0、1或2)选择每个点的颜色。 为此,我使用名为c的参数: plt.scatter(pca_data[:, 0], pca_data[:, 1], c=[0,1,1,0,2]) 我想做的是添加一个图例,将绘图中的颜色与标签链接起来,但是,我找不到我给出的值(0、1或2)如何转换为实际颜色 我曾想过直接给颜色,但我希望这个过程是自动化的,这样无论实际的类数是多少,它都能工作 我尝试使用来_rgb(来自matplotlib.col

我使用matplotlib Python库创建PCA绘图,根据类值(0、1或2)选择每个点的颜色。 为此,我使用名为c的参数:

plt.scatter(pca_data[:, 0], pca_data[:, 1], c=[0,1,1,0,2])
我想做的是添加一个图例,将绘图中的颜色与标签链接起来,但是,我找不到我给出的值(0、1或2)如何转换为实际颜色

我曾想过直接给颜色,但我希望这个过程是自动化的,这样无论实际的类数是多少,它都能工作

我尝试使用
来_rgb(来自matplotlib.colors)
,但由于值不在0和1之间,因此不起作用,如果我缩放它们,最终会得到一个奇数颜色向量(黑、白、黑)

有什么想法吗


谢谢。

下面是一个示例,其中有3个标签(但该方法可扩展到任意数量):


以下是一个示例,其中有3个标签(但该方法可扩展到任意数量):

import numpy as np
import matplotlib.pyplot as plt 
import matplotlib.cm as cm
import matplotlib.colors as colors

pca_data = np.random.randn(100,2) #some fake data
labels = np.random.randint(low=0,high=3,size=100) #some fake class labels

cNorm = colors.Normalize(vmin=0,vmax=2) #normalise the colormap
scalarMap = cm.ScalarMappable(norm=cNorm,cmap='hot') #map numbers to colors

fig,ax = plt.subplots()
for i in np.unique(labels):
    ax.scatter(pca_data[labels==i,0],pca_data[labels==i,1],\
               c=scalarMap.to_rgba(i),label="class {}".format(i),s=100)

ax.legend(scatterpoints=1)