我想使用图形代数在一张图表上绘制多个有些不相关的数据集。 即我想要一些虚线,另一些虚线。 颜色可以随机就好。 理想情况下,我会为每个项目都有自定义标签。
我一直在尝试通过为每个数据集创建一个数据对象并向其应用图层来实现这一目标,但我不确定如何通过一个漂亮的图例来实现这一目标。 另外,使用图形功能代数似乎不是一种自然的方法。
function filterPlot(filterPos; xlab = "", ylab="Blocking Intensity")
dataForPlot = nothing
vec_to_df((id, values)) = DataFrame(label = id, xx = 1:length(values), yy = values)
#filterPos is generaly a vector of vectors. We want to plot each of the vectors.
if filterPos[1] isa Array{<:Number,1}
counterj=1
dataForPlot = data(DataFrame(xx = 1:length(filterPos[1]), yy = filterPos[1]))*mapping(:1=>(t->t) ,:2 => (t->t))* visual( color = ColorSchemes.twelvebitrainbow[counterj])
for thing in filterPos[2:end]
counterj+=1
plotFilter = DataFrame(xx = 1:length(thing), yy = thing)
dataForPlot =dataForPlot + data(plotFilter)*mapping(:1=>(t->t) ,:2 => (t->t))*visual(color = ColorSchemes.twelvebitrainbow[counterj])
end
else
plotFilter = DataFrame(xx = 1:length(filterPos), yy = filterPos)
dataForPlot = data(plotFilter)*mapping(:xx=>(t->t) ,:yy => (t->t))
end
dataForPlot *= visual(Lines)
plaxis = (xlabel = xlab, ylabel = ylab)
drawing = draw(dataForPlot;axis = plaxis)
return drawing
end
编辑:代码中的拼写错误
假设我将数据存储为向量的向量:
#My x values:
xdatas = [ xvalues1, xvalues2 ]
ydatas = [yvalues1, yvalues2]
myColor = anyColorSchemeILike
colorLength = length(myColor)
vec_to_df(j) = DataFrame(xx = xdatas[j], yy = ydatas[j])
dataForPlot = data(vec_to_df(1))*mapping(:xx, :yy)*visual(color = myColor[ 1 ] )
for j in 2:length(xdatas)
dataForPlot += data(vec_to_df(j))*mapping(:xx, :yy) *visual(color = myColor[ mod(j-1,colorLength-1)+1 ] )
end
actualFigure = Figure()
draw!(actualFigure[1,1], dataForPlot )