Example 2

using DataFrames, Compose, Gadfly
using CoupledFields, LinearAlgebra, Random, Statistics
set_default_graphic_size(21cm, 14cm)


function rHypersphere(n::Int, k::Int)
    Q = qr(randn(k,k)).Q
    return Q[:,1:n]
end

function simfn(n::Int, p::Int, sc::Float64)
    Wx = rHypersphere(2,p)
    Wy = rHypersphere(2,2)
    X = sc*rand(n,p) .- 0.5*sc
    xstar = X*Wx
    ystar = zscore([6.3*xstar[:,1].*exp.(-0.1*xstar[:,1].^2) randn(n)],1)
    Y =  ystar / Wy
    return zscore(X,1), Y, xstar, ystar
end

createDF = function(df::Int, R::Vector, Y::Matrix{Float64})
    Xs = bf(R, df)
    CCAm = cca([-9. -9.], Xs, Y)
    return DataFrame(x=R, y= CCAm.T[:,1], y2 = CCAm.R[:,1].-mean(CCAm.R[:,1]), df="df=$df")
end

Random.seed!(1234)
X, Y, xstar, ystar = simfn(200, 2, 30.0)

kpars = GaussianKP(X)
gKCCAm = gKCCA([0.4, -5, 1], X, Y, kpars )

plotfn = function(v)
    mlfs = 10pt
    D1= vcat([createDF(df, gKCCAm.R[:,1], Y) for df in v]...)

plot(D1, xgroup=:df,
    Geom.subplot_grid(Coord.cartesian(ymin=-3, ymax=3),
        layer(x=:x, y=:y2, Geom.line, Theme(default_color=colorant"red")),
        layer(x=:x, y=:y, Geom.point)
    ),
    Guide.ylabel("<b>YA₁</b>"),
    Theme(plot_padding=[0mm], major_label_font_size=mlfs)
 )
end

pb = plotfn(4:6)
push!(pb, Guide.xlabel("<b>XW₁</b> (gKCCA)" ))

compose(context(),
    (context(0, 0, 1.0, 0.45), render(plotfn(1:3))),
    (context(0, 0.45, 1.0, 0.55), render(pb))
)
XW₁ (gKCCA)df=6df=5df=4-10-9-8-7-6-5-4-3-2-1012345678910-9.0-8.8-8.6-8.4-8.2-8.0-7.8-7.6-7.4-7.2-7.0-6.8-6.6-6.4-6.2-6.0-5.8-5.6-5.4-5.2-5.0-4.8-4.6-4.4-4.2-4.0-3.8-3.6-3.4-3.2-3.0-2.8-2.6-2.4-2.2-2.0-1.8-1.6-1.4-1.2-1.0-0.8-0.6-0.4-0.20.00.20.40.60.81.01.21.41.61.82.02.22.42.62.83.03.23.43.63.84.04.24.44.64.85.05.25.45.65.86.06.26.46.66.87.07.27.47.67.88.08.28.48.68.89.0-10-50510-9.0-8.5-8.0-7.5-7.0-6.5-6.0-5.5-5.0-4.5-4.0-3.5-3.0-2.5-2.0-1.5-1.0-0.50.00.51.01.52.02.53.03.54.04.55.05.56.06.57.07.58.08.59.0-10-9-8-7-6-5-4-3-2-1012345678910-9.0-8.8-8.6-8.4-8.2-8.0-7.8-7.6-7.4-7.2-7.0-6.8-6.6-6.4-6.2-6.0-5.8-5.6-5.4-5.2-5.0-4.8-4.6-4.4-4.2-4.0-3.8-3.6-3.4-3.2-3.0-2.8-2.6-2.4-2.2-2.0-1.8-1.6-1.4-1.2-1.0-0.8-0.6-0.4-0.20.00.20.40.60.81.01.21.41.61.82.02.22.42.62.83.03.23.43.63.84.04.24.44.64.85.05.25.45.65.86.06.26.46.66.87.07.27.47.67.88.08.28.48.68.89.0-10-50510-9.0-8.5-8.0-7.5-7.0-6.5-6.0-5.5-5.0-4.5-4.0-3.5-3.0-2.5-2.0-1.5-1.0-0.50.00.51.01.52.02.53.03.54.04.55.05.56.06.57.07.58.08.59.0-10-9-8-7-6-5-4-3-2-1012345678910-9.0-8.8-8.6-8.4-8.2-8.0-7.8-7.6-7.4-7.2-7.0-6.8-6.6-6.4-6.2-6.0-5.8-5.6-5.4-5.2-5.0-4.8-4.6-4.4-4.2-4.0-3.8-3.6-3.4-3.2-3.0-2.8-2.6-2.4-2.2-2.0-1.8-1.6-1.4-1.2-1.0-0.8-0.6-0.4-0.20.00.20.40.60.81.01.21.41.61.82.02.22.42.62.83.03.23.43.63.84.04.24.44.64.85.05.25.45.65.86.06.26.46.66.87.07.27.47.67.88.08.28.48.68.89.0-10-50510-9.0-8.5-8.0-7.5-7.0-6.5-6.0-5.5-5.0-4.5-4.0-3.5-3.0-2.5-2.0-1.5-1.0-0.50.00.51.01.52.02.53.03.54.04.55.05.56.06.57.07.58.08.59.0-10-9-8-7-6-5-4-3-2-1012345678910-9.0-8.8-8.6-8.4-8.2-8.0-7.8-7.6-7.4-7.2-7.0-6.8-6.6-6.4-6.2-6.0-5.8-5.6-5.4-5.2-5.0-4.8-4.6-4.4-4.2-4.0-3.8-3.6-3.4-3.2-3.0-2.8-2.6-2.4-2.2-2.0-1.8-1.6-1.4-1.2-1.0-0.8-0.6-0.4-0.20.00.20.40.60.81.01.21.41.61.82.02.22.42.62.83.03.23.43.63.84.04.24.44.64.85.05.25.45.65.86.06.26.46.66.87.07.27.47.67.88.08.28.48.68.89.0-10-50510-9.0-8.5-8.0-7.5-7.0-6.5-6.0-5.5-5.0-4.5-4.0-3.5-3.0-2.5-2.0-1.5-1.0-0.50.00.51.01.52.02.53.03.54.04.55.05.56.06.57.07.58.08.59.0YA₁df=3df=2df=1-10-9-8-7-6-5-4-3-2-1012345678910-9.0-8.8-8.6-8.4-8.2-8.0-7.8-7.6-7.4-7.2-7.0-6.8-6.6-6.4-6.2-6.0-5.8-5.6-5.4-5.2-5.0-4.8-4.6-4.4-4.2-4.0-3.8-3.6-3.4-3.2-3.0-2.8-2.6-2.4-2.2-2.0-1.8-1.6-1.4-1.2-1.0-0.8-0.6-0.4-0.20.00.20.40.60.81.01.21.41.61.82.02.22.42.62.83.03.23.43.63.84.04.24.44.64.85.05.25.45.65.86.06.26.46.66.87.07.27.47.67.88.08.28.48.68.89.0-10-50510-9.0-8.5-8.0-7.5-7.0-6.5-6.0-5.5-5.0-4.5-4.0-3.5-3.0-2.5-2.0-1.5-1.0-0.50.00.51.01.52.02.53.03.54.04.55.05.56.06.57.07.58.08.59.0-10-9-8-7-6-5-4-3-2-1012345678910-9.0-8.8-8.6-8.4-8.2-8.0-7.8-7.6-7.4-7.2-7.0-6.8-6.6-6.4-6.2-6.0-5.8-5.6-5.4-5.2-5.0-4.8-4.6-4.4-4.2-4.0-3.8-3.6-3.4-3.2-3.0-2.8-2.6-2.4-2.2-2.0-1.8-1.6-1.4-1.2-1.0-0.8-0.6-0.4-0.20.00.20.40.60.81.01.21.41.61.82.02.22.42.62.83.03.23.43.63.84.04.24.44.64.85.05.25.45.65.86.06.26.46.66.87.07.27.47.67.88.08.28.48.68.89.0-10-50510-9.0-8.5-8.0-7.5-7.0-6.5-6.0-5.5-5.0-4.5-4.0-3.5-3.0-2.5-2.0-1.5-1.0-0.50.00.51.01.52.02.53.03.54.04.55.05.56.06.57.07.58.08.59.0-10-9-8-7-6-5-4-3-2-1012345678910-9.0-8.8-8.6-8.4-8.2-8.0-7.8-7.6-7.4-7.2-7.0-6.8-6.6-6.4-6.2-6.0-5.8-5.6-5.4-5.2-5.0-4.8-4.6-4.4-4.2-4.0-3.8-3.6-3.4-3.2-3.0-2.8-2.6-2.4-2.2-2.0-1.8-1.6-1.4-1.2-1.0-0.8-0.6-0.4-0.20.00.20.40.60.81.01.21.41.61.82.02.22.42.62.83.03.23.43.63.84.04.24.44.64.85.05.25.45.65.86.06.26.46.66.87.07.27.47.67.88.08.28.48.68.89.0-10-50510-9.0-8.5-8.0-7.5-7.0-6.5-6.0-5.5-5.0-4.5-4.0-3.5-3.0-2.5-2.0-1.5-1.0-0.50.00.51.01.52.02.53.03.54.04.55.05.56.06.57.07.58.08.59.0-10-9-8-7-6-5-4-3-2-1012345678910-9.0-8.8-8.6-8.4-8.2-8.0-7.8-7.6-7.4-7.2-7.0-6.8-6.6-6.4-6.2-6.0-5.8-5.6-5.4-5.2-5.0-4.8-4.6-4.4-4.2-4.0-3.8-3.6-3.4-3.2-3.0-2.8-2.6-2.4-2.2-2.0-1.8-1.6-1.4-1.2-1.0-0.8-0.6-0.4-0.20.00.20.40.60.81.01.21.41.61.82.02.22.42.62.83.03.23.43.63.84.04.24.44.64.85.05.25.45.65.86.06.26.46.66.87.07.27.47.67.88.08.28.48.68.89.0-10-50510-9.0-8.5-8.0-7.5-7.0-6.5-6.0-5.5-5.0-4.5-4.0-3.5-3.0-2.5-2.0-1.5-1.0-0.50.00.51.01.52.02.53.03.54.04.55.05.56.06.57.07.58.08.59.0YA₁