matplotlib分散失败并出现错误:'c'参数包含n个元素,不适用于大小为n的'x',大小为n的'y'

布尔杜伊:

我正在尝试使用matplotlib创建散点图,其中每个点都有特定的颜色值。

我缩放这些值,然后在“左”和“右”颜色之间应用alpha混合。

# initialization
from matplotlib import pyplot as plt
from sklearn.preprocessing import MinMaxScaler
import numpy as np

values = np.random.rand(1134)

# actual code
colorLeft = np.array([112, 224, 112])
colorRight = np.array([224, 112, 112])
scaled = MinMaxScaler().fit_transform(values.reshape(-1, 1))
colors = np.array([a * colorRight + (1 - a) * colorLeft for a in scaled], dtype = np.int64)
# check values here
f, [sc, other] = plt.subplots(1, 2)
sc.scatter(np.arange(len(values)), values, c = colors)

但是最后一行给出了错误:

'c'参数包含1134个元素,不适用于大小为1134的'x',大小为1134的'y'

分散的文件说,对参数c

c:颜色,序列或颜色序列,可选

标记颜色。可能的值:

  A single color format string.
  A sequence of color specifications of length n.
  A sequence of n numbers to be mapped to colors using cmap and norm.
  A 2-D array in which the rows are RGB or RGBA.

我想在最后一个选项中使用RGB值。

check values here用一些打印语句替换了注释:

print(values)
print(colors)
print(values.shape)
print(colors.shape)

结果如下:

[0.08333333 0.08333333 0.08333333 ... 1.         1.         1.08333333]
[[112 224 112]
 [112 224 112]
 [112 224 112]
 ...
 [214 121 112]
 [214 121 112]
 [224 111 112]]
(1134,)
(1134, 3)
丹·佩雷拉:

将颜色转换为0 <= colors <= 1的float数组,它应该可以正常工作。

sc.scatter(np.arange(len(values)), values, c = colors/255)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected]com 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章