matplotlib scatter Valueerror: 'c' 参数有 n 个元素,不能与大小为 m 的 'x' 和 'y' 一起使用

Posted

技术标签:

【中文标题】matplotlib scatter Valueerror: \'c\' 参数有 n 个元素,不能与大小为 m 的 \'x\' 和 \'y\' 一起使用【英文标题】:matplotlib scatter Valueerror: 'c' argument has n elements, which is not acceptable for use with 'x' and 'y' with size mmatplotlib scatter Valueerror: 'c' 参数有 n 个元素,不能与大小为 m 的 'x' 和 'y' 一起使用 【发布时间】:2021-12-14 23:27:36 【问题描述】:

我正在尝试在 Python (Jupyter Notebook) 上使用 matplotlib 散点图来创建 t-sne 可视化,不同的点使用不同的颜色。

我很惭愧地承认我主要是借用了预先编写的代码,所以其中一些细微差别远远超出了我的范围。但是,我遇到了一个我似乎无法解决的 ValueError(即使在查看 Stack Overflow 上询问的类似 ValueErrors 实例的解决方案之后)。

运行散点图(此处为相关代码)返回 ValueError: RGBA 序列应具有长度 3 或 4;虽然这显然是由 ValueError 直接引起的:'c' 参数有 470000 个元素,这与大小为 2500 的 'x' 和 'y' 不一致。

if __name__ == "__main__":
    print("Run Y = tsne.tsne(X, no_dims, perplexity) to perform t-SNE on your dataset.")
    print("Running example on ECG samples...")
    X = np.loadtxt("ecg_test_tsne_randomremoved_tagremoved.txt")
    labels = np.loadtxt("ecg_test_tsne_randomremoved_tagremoved.txt")
    Y = tsne(X, 2, 50, 20.0)
    pylab.scatter(Y[:, 0], Y[:, 1], 20, labels)
    pylab.show()

这里,txt 文件是包含所有数据的文件。 完整的代码是 van der Maaten 的 Python 实现,如有需要,可以使用here。

此外,它指出映射和 RGBA 转换都失败了(相当严重的失败),人们可能会欣赏详细的反馈。

我对这种状态感到非常困惑,因为即使在阅读了其他出现此 ValueError 的解决方案(如 Stack Overflow 上的详细说明)之后,我对于如何格式化“标签”以使 c 的尺寸可能匹配 x 和 y。

【问题讨论】:

【参考方案1】:

pyplot.scatter 的第四个参数是一种颜色或一组颜色,而不是标签。 scatter 没有标签参数。我将完全删除第 4 个参数。

【讨论】:

以上是关于matplotlib scatter Valueerror: 'c' 参数有 n 个元素,不能与大小为 m 的 'x' 和 'y' 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

使用matplotlib中scatter()绘制散点图

use matplotlib to draw scatter plot

pandas散点图-plot.scatter

matplotlib scatter 条件颜色

matplotlib的学习8-scatter散点图

散点图 scatter