Hi,
I want make 2 subplots with 2 function plots each in a 1-row 2-columns format. Below is a minimum working example for my use case.
x = -2π:0.1:+2π
y11 = sin.(x)
y12 = sin.(x .+ 0.25π)
y21 = cos.(x)
y22 = sin.(x) .* cos.(x)
plot(
plot(x, y11),
plot!(x, y12),
plot(x, y21),
plot!(x, y22)
)
The result I get is with plots vertically stacked (2-row 1-column layout) as below.
How can I fix this to get subplots side-by-side?
With thanks and regards,
Vishnu Raj
oheil
2
p=plot(x, y11,layout=(1,2))
plot!(p,x, y12)
plot!(p,x, y21, subplot=2)
plot!(p,x, y22, subplot=2)
1 Like
yha
3
Other options:
Constructing two plots and passing them to plot
:
plt1 = plot(x, y11)
plot!(plt1, x, y12)
plt2 = plot(x, y21)
plot!(plt2, x, y22)
plot(plt1, plt2)
Using columns to make separate series:
plot(plot([x x], [y11 y12]),
plot([x x], [y21 y22]))
A one-liner similar to your original code (but this is less readable, I think):
plot(plot!(plot(x, y11), x, y12),
plot!(plot(x, y21), x, y22)
)
1 Like
Hi @yha, Thanks for the snippets. I really liked the last oneliner you gave
I tried to modify that and came up with version below
plot(
plot(x, y11) |> p -> plot!(p, x, y12),
plot(x, y21) |> p -> plot!(p, x, y22)
)
Still not easily readable, but somehow shows julia’s beauty.
1 Like
I’d do
plot(plot([sin, x -> sin(x + 0.25π)], x),
plot([cos, x -> sin(x)*cos(x)], x),
layout = (1, 2))
3 Likes
Simpler:
plot( plot(x, [y11, y12]), plot(x, [y21,y22]) )
5 Likes