julia-lang - 使用带有PyPlot命令的Colors.jl数组

时间:2016-09-19 10:09:01

标签: matplotlib julia

我正在尝试将使用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。

1 个答案:

答案 0 :(得分:1)

您可以为color函数的plot选项提供3 UFixed8元组(这是FixedPointNumbers.UFixed{UInt8,8}的别名)。 Colors.jl具有以下函数redgreenblue,以便从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>

输出:

enter image description here

也在v"0.3.12"上进行了测试。唯一的区别是RGB₁ = distinguishable_colors(10)[5]在我的情况下会返回不同的颜色(RGB{U8}(0.0,0.522,1.0))。