2016-03-06 2 views
3

Есть ли способ покрасить каждый набор данных?Цветные индивидуальные линии с оводами

Существует решение с использованием 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

как о 'слое (х = 1: 10, у = 1: 10, Stat.step, Geom.line, тема (default_color = colorant "green")) ' – Gnimuc

+0

@GnimucK. Отлично. Благодарю. – BAR

ответ

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"].

+1

Может хорошо работать с подсвечниками. Спасибо, спасибо. – BAR

+1

@BAR Нет проблем. Я потратил некоторое время на то, чтобы работать над моим собственным модулем построения, поэтому подумал, что стоит поделиться, чтобы сохранить другие ту же боль. –

+1

это приятно! спасибо @ColinTBowers – Gnimuc

6

Построение не должно быть таким болезненным. Вот как вы это делаете в Plots используя Овод бэкенд:

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

enter image description here

+0

Этот пакет отличная идея! Ждем его использования. –