使用Numpy的where在Matplotlib中进行条件着色

时间:2019-06-26 19:41:34

标签: python matplotlib

我想要实现的是有条件地为散点图着色。我遵循了这个post,但是得到了TypeError: len() of unsized object。我正在做以下

for i in range(n_cells):
   col = np.where(cell_list[i].m_n == 1, 'g', 'k')
   plt.scatter(cell_list[i].x, cell_list[i].y, c = col, alpha = 0.5, s = 2)

cell_listcell的数组,是用户定义的对象。我已经检查并确保col是正确大小的gk的数组。此外,例如,如果将c = col更改为c = 'b',则绘图可以正常工作。我是Python的新手,所以我找不到问题所在。

1 个答案:

答案 0 :(得分:0)

由于np.where始终返回一个numpy对象,因此使用str(col)可用于以下脚本。

import matplotlib.pyplot as plt
import numpy as np

col = np.where(0 == 1, 'g', 'k')
plt.scatter([0, 1], [0, 1], c = str(col), alpha = 0.5, s = 2)

plt.show()