Python 如何使用colormap为matplotlib散点图中的特定点设置标记类型

Python 如何使用colormap为matplotlib散点图中的特定点设置标记类型,python,matplotlib,Python,Matplotlib,我有一个用户案例,假设我有三个系列的数据:x,y,z。 我想做一个散点图,使用(x,y)作为坐标,z作为散点的颜色,使用plt.scatter的cmap关键字。但是,我想通过使用与其他点不同的标记类型和大小来强调一些特定点 ​最低限度的示例如下所示: x,y,z = np.random.randn(3,10) plt.scatter(x,y,c=z,cmap=matplotlib.cm.jet) plt.colorbar()​ ​如果我想为(x[5],y[5],z[5])使用不同的标记类型,我

我有一个用户案例,假设我有三个系列的数据:x,y,z。 我想做一个散点图,使用(x,y)作为坐标,z作为散点的颜色,使用plt.scatter的cmap关键字。但是,我想通过使用与其他点不同的标记类型和大小来强调一些特定点

​最低限度的示例如下所示:

x,y,z = np.random.randn(3,10)
plt.scatter(x,y,c=z,cmap=matplotlib.cm.jet)
plt.colorbar()​
​如果我想为(x[5],y[5],z[5])使用不同的标记类型,我该怎么做?
我能想到的唯一方法是使用plt.scatter([x[5],y[5])再次绘制该点,但通过手动查找颜色贴图来定义颜色​与z[5]对应的颜色。但是,这相当繁琐。有更好的方法吗?

每个散点图都有一个标记,默认情况下,您不能在单个散点图中使用不同的标记。因此,如果您只想更改标记大小并保持标记不变,您可以为
散点图
s
argum提供不同大小的数组耳鼻喉科

import matplotlib.pyplot as plt
import numpy as np; np.random.seed(10)

x,y,z = np.random.randn(3,10)

sizes = [36]*len(x)
sizes[5] = 121
plt.scatter(x,y,c=z,s=sizes, cmap=plt.cm.jet)

plt.colorbar()

plt.show()

如果你真的需要不同的标记样式,你可以绘制一个新的散点图。然后你可以将第二个散点的颜色限制设置为第一个散点的颜色限制

import matplotlib.pyplot as plt
import numpy as np; np.random.seed(10)

x,y,z = np.random.randn(3,10)
xs, ys, zs = [x[5]], [y[5]], [z[5]]
print xs, ys, zs
y[5] = np.nan

sc = plt.scatter(x,y,c=z,s=36, cmap=plt.cm.jet)
climx, climy = sc.get_clim()
plt.scatter(xs,ys,c=zs,s=121, marker="s", cmap=plt.cm.jet, vmin=climx, vmax=climy  )  

plt.colorbar()

plt.show()

最后,将在中给出一个复杂的解决方案,即在同一散点图中有几个不同的标记