首页 > 解决方案 > Matplotlib 中使用 Numpy 的条件着色 where

问题描述

我想要实现的是有条件地为我的散点图着色。我关注了这篇文章,但我明白了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_list是一个 s 的数组cell,它是一个用户定义的对象。我已经检查并确保这是一个正确大小col的数组。此外,如果您更改为例如,该图可以正常工作。我对 Python 比较陌生,所以我找不到问题所在。gkc = colc = 'b'

标签: pythonmatplotlib

解决方案


由于 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()

推荐阅读