为matplotlib散点图中的每个标记提供一个单独的zorder值

时间:2019-04-30 22:20:19

标签: python matplotlib z-order

我有一个带有许多标记的matplotlib散点图:

plt.scatter(x_position,y_position,c=z_position,s=90, cmap=cm.bwr,linewidth=1,edgecolor='k')

有时标记重叠。我希望每个的zorder都基于各个标记的z_position。

这是否可能在散点图中出现?或者我是否必须为每个数据点单独使用一行具有其zorder值的行?

谢谢。

1 个答案:

答案 0 :(得分:2)

import numpy as np
import matplotlib.pyplot as plt


x = np.array([0,1,0,1])
y = np.array([0,0,1,1])
z = np.array([8,4,6,2])

如果您现在致电

plt.scatter(x, y, c=z, s=1000, marker="X", 
            cmap=plt.cm.bwr, linewidth=1, edgecolor='k')

标记重叠:

enter image description here

最后绘制数组中的最后一个标记,因此z = 2的标记在前面。

您可以按z对数组进行排序以更改外观顺序。

order = np.argsort(z)
plt.scatter(x[order], y[order], c=z[order], s=1000, marker="X", 
            cmap=plt.cm.bwr, linewidth=1, edgecolor='k')

enter image description here