Bur*_*dui 15 python matplotlib scatter-plot
我正在尝试使用 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)
Run Code Online (Sandbox Code Playgroud)
但是最后一行给出了错误:
'c' 参数有 1134 个元素,不能用于大小为 1134 的 'x',大小为 1134 的 'y'
将分散的文件说,对参数c
c : 颜色、顺序或颜色顺序,可选
标记颜色。可能的值:
Run Code Online (Sandbox Code Playgroud)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)
Run Code Online (Sandbox Code Playgroud)
结果如下:
[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)
Run Code Online (Sandbox Code Playgroud)
小智 11
将颜色转换为 0 <= 颜色 <= 1 的浮点数组,它应该可以正常工作。
sc.scatter(np.arange(len(values)), values, c = colors/255)
| 归档时间: |
|
| 查看次数: |
17601 次 |
| 最近记录: |