我正在尝试将使用Glos.jl中的distinguishedishable_colors生成的RGB元组分配给Julia lang中具有pyplot的特定行,例如:
using PyPlot, Colors
RGB_1 = distinguishable_colors(10)[5]
plot(linspace(1,10,10), color=RGB_1)
但似乎rgb空间颜色不适合情节:
ValueError: to_rgba: Invalid rgba arg "<PyCall.jlwrap RGB{U8}(0.0,0.0,0.0)>"
to_rgb: Invalid rgb arg "<PyCall.jlwrap RGB{U8}(0.0,0.0,0.0)>"
cannot convert argument to rgb sequence
无论如何从Colors.jl生成的数组中获取元组(0.0,0.0,0.0),而不是RGB {U8}(0.0,0.0,0.0)?我注意到了
plot(linspace(1,10,10), color=(0.0,0.0,0.0))
确实有效。 Julia 0.3.2 with matplotlib 1.4.2。
答案 0 :(得分:1)
您可以为color
函数的plot
选项提供3 UFixed8
元组(这是FixedPointNumbers.UFixed{UInt8,8}
的别名)。 Colors.jl
具有以下函数red
,green
和blue
,以便从RGB
类型获取每个相应字段,每个UFixed8
类型:
julia> VERSION
v"0.4.6"
julia> using PyPlot, Colors
julia> rgb₁ = distinguishable_colors(10)[5]
RGB{U8}(0.843,0.267,0.0)
julia> rgb_sequence(c::RGB) = (red(c), green(c), blue(c))
rgb (generic function with 1 method)
julia> rgb₁_tuple = rgb_sequence(rgb₁)
(UFixed8(0.843),UFixed8(0.267),UFixed8(0.0))
julia> eltype(rgb₁_tuple)
FixedPointNumbers.UFixed{UInt8,8}
julia> plot(linspace(1, 10, 10), color = rgb₁_tuple)
1-element Array{Any,1}:
PyObject <matplotlib.lines.Line2D object at 0x000000002864E240>
输出:
也在v"0.3.12"
上进行了测试。唯一的区别是RGB₁ = distinguishable_colors(10)[5]
在我的情况下会返回不同的颜色(RGB{U8}(0.0,0.522,1.0)
)。