matplotlib分散失败并出现错误:'c'参数包含n个元素,不适用于大小为n的'x',大小为n的'y' [英] matplotlib scatter fails with error: 'c' argument has n elements, which is not acceptable for use with 'x' with size n, 'y' with size n
问题描述
我正在尝试使用 matplotlib 创建一个散点图,其中每个点都有一个特定的颜色值.
I am trying to create a scatter plot using matplotlib where each point has a specific color value.
我缩放值,然后在左"和右"颜色之间应用 alpha 混合.
I scale the values and then apply alpha blending between a 'left' and a 'right' color.
# 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)
然而最后一行给出了错误:
However the last line gives the error:
'c' 参数有 1134 个元素,不能与大小为 1134 的 'x' 和大小为 1134 的 'y' 一起使用
'c' argument has 1134 elements, which is not acceptable for use with 'x' with size 1134, 'y' with size 1134
分散文档表示参数c
c:颜色,颜色序列或颜色序列,可选
c : color, sequence, or sequence of color, optional
标记颜色.可能的值:
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值中使用最后一个选项的地方.
Where I want to use the last option with RGB values.
我用一些打印语句替换了 check values here
注释:
I replaced the check values here
comment with some print statements:
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 <= 颜色 <= 1 的浮点数组,它应该可以正常工作.
Convert colors to a float array with 0 <= colors <= 1 and it should work fine.
sc.scatter(np.arange(len(values)),values,c = colors/255)
这篇关于matplotlib分散失败并出现错误:'c'参数包含n个元素,不适用于大小为n的'x',大小为n的'y'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!