Got plotting working
This commit is contained in:
61
julia/plotting.jl
Normal file
61
julia/plotting.jl
Normal file
@@ -0,0 +1,61 @@
|
||||
# ------------------------------------------------------------------------------
|
||||
# PLOTTING FUNCTIONS
|
||||
|
||||
using Random, PlotlyJS, Base.Iterators
|
||||
|
||||
function random_color()
|
||||
num1 = rand(0:255)
|
||||
num2 = rand(0:255)
|
||||
num3 = rand(0:255)
|
||||
return "#"*string(num1, base=16, pad=2)*string(num2, base=16, pad=2)*string(num3, base=16, pad=2)
|
||||
end
|
||||
|
||||
function get_true_max(mat::Vector{Array{Float64,2}})
|
||||
return maximum(abs.(flatten(mat)))
|
||||
end
|
||||
|
||||
function plot_orbits(paths::Vector{Array{Float64,2}};
|
||||
primary::String="Earth",
|
||||
plot_theme::Symbol=:juno,
|
||||
labels::Vector{String}=Vector{String}(),
|
||||
title::String="Spacecraft Position")
|
||||
|
||||
N = 32
|
||||
θ = collect(range(0,length=N,stop=2π))
|
||||
ϕ = collect(range(0,length=N,stop=π))
|
||||
x = cos.(θ) * sin.(ϕ)'
|
||||
y = sin.(θ) * sin.(ϕ)'
|
||||
z = repeat(cos.(ϕ)',outer=[N, 1])
|
||||
ps = rs[primary] .* (x,y,z)
|
||||
x_p,y_p,z_p = ps
|
||||
|
||||
t1 = []
|
||||
for i = 1:length(paths)
|
||||
path = [ x for x in paths[i] ]
|
||||
label = labels != [] ? labels[i] : "orbit"
|
||||
color = random_color()
|
||||
push!(t1, scatter3d(;x=(path[:,1]),y=(path[:,2]),z=(path[:,3]),
|
||||
mode="lines", name=label, line_color=color, line_width=3))
|
||||
end
|
||||
limit = max(maximum(abs.(flatten(paths))),maximum(abs.(flatten(ps)))) * 1.1
|
||||
|
||||
t2 = surface(;x=(x_p),
|
||||
y=(y_p),
|
||||
z=(z_p),
|
||||
showscale=false,
|
||||
colorscale = p_colors[primary])
|
||||
|
||||
layout = Layout(;title="Orbit Plot",
|
||||
width=1000,
|
||||
height=600,
|
||||
paper_bgcolor="#222529",
|
||||
scene = attr(xaxis = attr(autorange = false,range=[-limit,limit]),
|
||||
yaxis = attr(autorange = false,range=[-limit,limit]),
|
||||
zaxis = attr(autorange = false,range=[-limit,limit]),
|
||||
aspectratio=attr(x=1,y=1,z=1),
|
||||
aspectmode="manual"))
|
||||
|
||||
p = Plot([t1...,t2],layout)
|
||||
plot(p)
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user