[Tip] 3D plot – surface와 scatter를 하나의 plot으로 표현하기

Julia에서 2개의 3d plot (surface, scatter)을 그리고 하나로 합치는 예제를 보여 준다.

두개 이상의 plot을 하나로 합치는 방법은 두번 째 이후 plot부터는 plot! 과 같은 방법으로 사용한다

아래 예제에서는 surface와 scatter를 하나의 plot로 합쳐서 보여주는 예제를 표시하는데

먼저 surface를 그리고 두번재 scatter와 합쳐서 하나로 보여 준다. scatter 뒤에 “!” 를 붙이면 찻번째 surface와 합쳐서 보여 주게 된다

순서는

surface
scatter!

주의 할점은 surface 등의 3d plot은 x,y의 값의 범위가 동일해야 한다. 다르면 에러 발생함

두가지 방법으로 동일한 예제를 보여 준다

1) 일반적인 방법

2) julia 1.3에 내장된 cartesian product를 활용하는 방법

예제 1) – 일반적인 방법

using Plots
# use gr backend
gr()
# use PyPlot backend
#pyplot()
x = y = -4:0.1:4
f1(x,y) = cos(sqrt(x^2 + y^2))
z = real([f1(xi,yi) for xi = x, yi = y ])
surface(x,y,z,α=0.1)
scatter!((-2,0,f1(-2,0)...),  markersize=5,  markercolor = :yellow,  alpha=1.0 )

예제 2) julia 1.3에 내장된 cartesian product를 활용하는 방법
– “Iterators.product(x,y) |> collect” 방법을 사용 할 수 있으며 julia 1.3 부터 내장기능으로 가능

using Plots
gr()
x = y = -4:0.1:4
# Cartesian product
# 
v = Iterators.product(x,y) |> collect
f2(v) = cos(sqrt(v[1]^2 + v[2]^2))
z = real(f2.(v))
surface(x,y,z,α=0.1)
scatter!((-2,0,f2((-2,0))),  markersize=5,  markercolor = :yellow,  alpha=1.0)

Jupyter notebook 예제 -> 여기

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다