用牛奶颜色单独的线条

时间:2016-03-06 20:53:10

标签: julia gadfly

有没有办法为每个数据集着色?

有一个使用DataFrames的解决方案,但没有它们的情况呢?

我尝试了这个,但它没有效果:

using Gadfly

plot(
  layer(x=1:10, y=1:10, Stat.step, Geom.line),
  layer(x=1:10, y=2:11, Stat.step, Geom.line),
  color=["red", "green"]
)

2 个答案:

答案 0 :(得分:6)

绘图不应该是这种痛苦。以下是使用Gadfly后端在Plots中执行此操作的方法:

using Plots; gadfly(size=(400,300))
plot(rand(10,2), line = ([:red :green], :step))

enter image description here

答案 1 :(得分:2)

@GnimucK。评论显示了当您以交互方式工作时如何执行此操作。当你想将颜色作为参数传递给函数时,该方法会遇到一些困难。在我想要在运行时选择颜色的多行的一般情况下,我有一个看起来有点像下面的函数:

using Compose, Gadfly
function my_plot_with_colors{T<:Number}(x::Vector{Vector{T}}, y::Vector{Vector{T}}, colorVec::Vector{ASCIIString})
    !(length(x) == length(y) == length(colorVec)) && error("Length mismatch in inputs")
    layerArr = Array(Vector{Layer}, length(x))
    for k = 1:length(x)
        layerArr[k] = layer(x=x[k], y=y[k], Geom.line, Theme(default_color=parse(Compose.Colorant, colourVec[k])))
    end
    return(plot(layerArr...))
end

其中,如果length(x) = 3,您的输入向量colourVec将如下所示:["red", "green", "blue"]