Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.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 您如何使用“cmap”来显示;“第三轴”;在matplotlib中?_Python_Matplotlib_Plot - Fatal编程技术网

Python 您如何使用“cmap”来显示;“第三轴”;在matplotlib中?

Python 您如何使用“cmap”来显示;“第三轴”;在matplotlib中?,python,matplotlib,plot,Python,Matplotlib,Plot,我有一些数据,比如y=[5,3,1,9,4,3,4,5,7,8,8,3,2,9,5,3,6,9,9,6]我想在散点图中以给定的顺序绘制这些值。使用matplotlib,右“几何体”由plt.scatter(范围(len(y)),y)给出。然而,这些数据是分组的。前五个数据点在第一组中,第二个数据点在第二组中,等等。我有一个存储组标签的列表组=[1,1,1,1,2,2,2,2,3,3,3,4,4,4,4,5,5,5,5,5,5,5] 我现在想要做的是与plt.scatter(range(len(y

我有一些数据,比如
y=[5,3,1,9,4,3,4,5,7,8,8,3,2,9,5,3,6,9,9,6]
我想在散点图中以给定的顺序绘制这些值。使用matplotlib,右“几何体”由
plt.scatter(范围(len(y)),y)
给出。然而,这些数据是分组的。前五个数据点在第一组中,第二个数据点在第二组中,等等。我有一个存储组标签的列表<代码>组=[1,1,1,1,2,2,2,2,3,3,3,4,4,4,4,5,5,5,5,5,5,5]

我现在想要做的是与plt.scatter(range(len(y)),y)具有相同的绘图,但是在绘图中第一组是蓝色的,第二组是红色的,第三组是绿色的,第四组是黑色的,第五组是紫色的。实际上,这就像使用颜色表示第三个轴,沿着该轴测量数据。我看到了一个解决方案,您只需调用
plot.scatter
五次,但出于几个原因,我想尝试使用
cmap
参数来实现这一点

我试过了

import matplotlib.pyploy as plt

y = [5,3,1,9,4, 3,4,5,7,8, 8,3,2,9,5, 3,6,9,9,6]
group = [1,1,1,1,1, 2,2,2,2,2, 3,3,3,3,3, 4,4,4,4,4, 5,5,5,5,5]

plt.scatter(range(20), y, c=group, cmap=['b','r','g','black','magenta'])

但这不起作用。我试着阅读如何使用
cmap
,但我发现的每个示例要么与我的数据结构有点不一致,要么非常复杂。我可以重新构造数据以适应这些示例,但有些事情告诉我应该有一个更简单的方法。

您的示例不清楚-您有四个组和五个数据点,或者有五个组和四个数据点。无论如何,您要么使用a,要么必须注册:

样本输出:

import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap

y =     [5,3,1,9, 4,3,4,5, 7,8,8,3, 2,9,5,3, 6,9,9,6]
group = [1,1,1,1, 2,2,2,2, 3,3,3,3, 4,4,4,4, 5,5,5,5]

my_cmap = ListedColormap(['b','r','g','black','magenta'])

plt.scatter(range(len(y)), y, c=group, cmap=my_cmap)
plt.show()