Matplotlib julia lang-通过PyPlot命令使用Colors.jl数组

Matplotlib julia lang-通过PyPlot命令使用Colors.jl数组,matplotlib,julia,Matplotlib,Julia,我正在尝试将一个RGB元组分配给Julia lang中具有pyplot的特定行,该元组由colors.jl中的可区分的_colors生成,例如: 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

我正在尝试将一个RGB元组分配给Julia lang中具有pyplot的特定行,该元组由colors.jl中的可区分的_colors生成,例如:

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

确实有效。Julia 0.3.2与matplotlib 1.4.2一起使用。

您可以为
plot
函数的
color
选项提供一个3的元组
UFixed8
(这是
FixedPointNumbers.UFixed{UInt8,8}
的别名)<代码>颜色。jl具有以下功能
红色
绿色
蓝色
,以从
RGB
类型获取各个字段,每个
UFixed8
类型:

julia>版本
v“0.4.6”
julia>使用PyPlot,颜色
朱莉娅>rgb₁ = 可分辨颜色(10)[5]
RGB{U8}(0.843,0.267,0.0)
julia>rgb_序列(c::rgb)=(红色(c)、绿色(c)、蓝色(c))
rgb(具有1种方法的通用函数)
朱莉娅>rgb₁_元组=rgb_序列(rgb₁)
(UFixed8(0.843)、UFixed8(0.267)、UFixed8(0.0))
julia>eltype(rgb)₁_元组)
FixedPointNumbers.UFixed{UInt8,8}
julia>绘图(linspace(1,10,10),颜色=rgb₁_元组)
一元数组{Any,1}:
PyObject
输出:


同样在
v“0.3.12”
上测试。唯一的区别是
RGB₁ = 在我的例子中,可分辨_颜色(10)[5]
返回不同的颜色(
RGB{U8}(0.0,0.522,1.0)
)。

rgb1v=map(x->Float64(getfield(RGB_1,x)),fieldnames(RGB_1))
返回一个Float64s向量。要在
绘图中使用,
color=(rgb1v…)
应该可以。但是我的Julia版本是0.5,所以你的里程数可能会有所不同。0.3不应该再真正使用了。升级到0.5(或者0.4,如果你必须的话),因为Julia正在改变,你想改变它!嗨,Dan,谢谢你的回答。我在你的代码中遇到以下错误:
rgb1v=map(x->Float64(getfield(RGB_1,x)),fieldnames(RGB_1))错误:无法在匿名地址中构造类型。/none:1在映射地址中。/abstractarray.jl:1328
根据版本,我同意,但debian stable可以处理此版本的Julia…从官方Julia下载页面安装最新的通用linux二进制文件,然后只需下载、卸载并运行。如果没有,v0.3支持将尽快退出尚未正式删除。@LeandroAcquaroli将行中的
Float64
更改为
Float64
(小写)。这在0.3中有效(在JuliaBox sandbox-+1中将其检查为云计算机和容器).@DanGetz谢谢。确认可以改成小写。谢谢,我可以确认此方法在v0.3.2中也有效。@LeandroAcquaroli如果我的答案解决了您的问题,请不要忘记将其标记为答案,谢谢!
plot(linspace(1,10,10), color=(0.0,0.0,0.0))