【问题标题】:Conditional coloring in Matplotlib using Numpy's whereMatplotlib 中使用 Numpy 的条件着色 where
【发布时间】:2019-06-27 04:34:44
【问题描述】:

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

【问题讨论】:

  • 如需更具体的帮助,请发帖minimal reproducible example
  • 我们很难测试代码,但我相信 np.where 总是返回一个 numpy 对象。你试过c = str(col) 吗?这似乎对我有用。
  • 如果cell_list[i].xNumPy scalar(例如np.array(1)),您发布的代码可能会引发TypeError。

标签: python matplotlib


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多