Given a function `y = a * x + b`

where `a`

and `b`

are of the type Particles. By using MonteCarloMeasurements.jl and Plots.jl, I can plot many sample function y(x) as follows

```
using MonteCarloMeasurements
using Plots
p = Particles(1000, MvNormal([0,0],[2. 1; 1 4]))
p2mat = Matrix(p)
f(x,a,b) = a*x + b
fig = plot(legend=false)
[plot!(x->f(x,p2mat[i,1],p2mat[i,2])) for i = 1:30]
fig
```

Please tell me how can I plot `y(x)`

with ribbon with (0.05;0.95) quantile?

Thank you in advance.

If you plot vectors of particles instead of using the function interface to plot, you should get ribbons automatically.

2 Likes

Thank you @baggepinnen. Following your suggestion [if I understand correctly], I already tried

```
using MonteCarloMeasurements
using Plots
p = Particles(1000, MvNormal([0,0],[2. 1; 1 4]))
a = p[1]
b = p[2]
f(x) = a*x + b
plot(x->f(x))
```

It returns to the following error

`ERROR: MethodError: no method matching Float64(::Particles{Float64, 1000})`

I also tried with

```
x = LinRange(1:0.1:3)
ribbonplot(x,f(x))
```

but still failed with error

`ERROR: MethodError: no method matching +(::Vector{Particles{Float64, 1000}}, ::Particles{Float64, 1000})`

Could you please be more specific to show me your solution?

Thank you for your help.

You must broadcast the function `f`

over `x`

since `x`

is a vector and `f`

only works for scalar `x`

.

Try this

```
x = LinRange(1:0.1:3)
plot(x,f.(x))
```

1 Like

Great, thank you for your help.