205 lines
5.9 KiB
Julia
205 lines
5.9 KiB
Julia
true || include("src/CoordVisualize.jl")
|
|
true || using GLMakie
|
|
using CoordVisualize
|
|
using FileIO
|
|
using ColorSchemes
|
|
using ColorTypes
|
|
|
|
mappath = "map.png"
|
|
map = load(mappath)
|
|
map_height, map_width = size(map)
|
|
|
|
fig = Figure(; size = (1000, 700))
|
|
ax = Axis(
|
|
fig[1:2, 1],
|
|
limits = (
|
|
-map_width ÷ 2 * 1.1,
|
|
map_width ÷ 2 * 1.1,
|
|
-map_height ÷ 2 * 1.1,
|
|
map_height ÷ 2 * 1.1,
|
|
),
|
|
aspect = DataAspect(),
|
|
)
|
|
|
|
# Options
|
|
options_width = 200
|
|
button_reset = Button(fig, label = "reset view")
|
|
toggle_inspector = Toggle(fig, active = false, tellwidth = false)
|
|
menu_lcolormapfunc =
|
|
Menu(fig, options = ["log", "altitude", "date", "constant"], default = "log")
|
|
menu_mcolormapfunc =
|
|
Menu(fig, options = ["log", "altitude", "date", "constant"], default = "log")
|
|
toggle_line = Toggle(fig, active = true, tellwidth = false)
|
|
toggle_marker = Toggle(fig, active = false, tellwidth = false)
|
|
slider_linewidth = Slider(fig, range = unique([1:1:5..., 5:2:15..., 15, 20:10:100...]))
|
|
slider_markersize = Slider(fig, range = unique([1:1:10..., 10:5:100...]), startvalue = 5)
|
|
# menu_linecolormap =
|
|
# Menu(fig, options = string.(keys(ColorSchemes.colorschemes)), default = "viridis")
|
|
# menu_markercolormap =
|
|
# Menu(fig, options = string.(keys(ColorSchemes.colorschemes)), default = "viridis")
|
|
textbox_linecolormap =
|
|
Textbox(fig, validator = (s -> s in string.(keys(ColorSchemes.colorschemes))))
|
|
textbox_markercolormap =
|
|
Textbox(fig, validator = (s -> s in string.(keys(ColorSchemes.colorschemes))))
|
|
textbox_linecolor = Textbox(fig, validator = (s -> begin
|
|
try
|
|
parse(Colorant, s)
|
|
catch
|
|
return false
|
|
end
|
|
return true
|
|
end), stored_string = "green")
|
|
lineconstcolor =
|
|
@lift(ColorMapFuncs.Constant(parse(Colorant, $(textbox_linecolor.stored_string))))
|
|
textbox_markercolor = Textbox(fig, validator = (s -> begin
|
|
try
|
|
parse(Colorant, s)
|
|
catch
|
|
return false
|
|
end
|
|
return true
|
|
end), stored_string = "green")
|
|
markerconstcolor =
|
|
@lift(ColorMapFuncs.Constant(parse(Colorant, $(textbox_markercolor.stored_string))))
|
|
line_options = grid!(
|
|
[1, 1] => Label(fig, "color"),
|
|
[1, 2:3] => menu_lcolormapfunc,
|
|
[2, 1] => Label(fig, "show line"),
|
|
[2, 2:3] => toggle_line,
|
|
[3, 1] => Label(fig, "width"),
|
|
[3, 2] => slider_linewidth,
|
|
[3, 3] => Label(fig, @lift(string($(slider_linewidth.value)))),
|
|
[4, 1] => Label(fig, "color scheme"),
|
|
[4, 2:3] => textbox_linecolormap,
|
|
[5, 1] => Label(fig, "color"),
|
|
[5, 2:3] => textbox_linecolor,
|
|
width = options_width,
|
|
)
|
|
marker_options = grid!(
|
|
[1, 1] => Label(fig, "color"),
|
|
[1, 2:3] => menu_mcolormapfunc,
|
|
[2, 1] => Label(fig, "show marker"),
|
|
[2, 2:3] => toggle_marker,
|
|
[3, 1] => Label(fig, "size"),
|
|
[3, 2] => slider_markersize,
|
|
[3, 3] => Label(fig, @lift(string($(slider_markersize.value)))),
|
|
[4, 1] => Label(fig, "color scheme"),
|
|
[4, 2:3] => textbox_markercolormap,
|
|
[5, 1] => Label(fig, "color"),
|
|
[5, 2:3] => textbox_markercolor,
|
|
width = options_width,
|
|
)
|
|
inspector_options = grid!(
|
|
[1, 1] => Label(fig, "inspector"),
|
|
[1, 2] => toggle_inspector,
|
|
width = options_width,
|
|
)
|
|
fig[1:2, 2] = grid!(
|
|
[0, :] => Label(fig, "Line", font = :bold),
|
|
[1, :] => line_options,
|
|
[2, :] => Label(fig, "Marker", font = :bold),
|
|
[3, :] => marker_options,
|
|
[4, :] => Label(fig, "Axis", font = :bold),
|
|
[5, :] => inspector_options,
|
|
[6, :] => button_reset,
|
|
tellheight = false,
|
|
width = options_width,
|
|
)
|
|
|
|
tlog = vcat(CoordVisualize.parse_log.(["coord_log_5.txt", "coord_log_6.txt"])...)
|
|
|
|
# Main
|
|
heatmap!(
|
|
ax,
|
|
(1:map_width) .- map_width ÷ 2 .- 1,
|
|
(1:map_height) .- map_height ÷ 2 .- 1,
|
|
rotr90(map),
|
|
inspectable = false,
|
|
)
|
|
|
|
tr2d = CoordVisualize.trace2ds!(
|
|
ax,
|
|
tlog,
|
|
linewidth = slider_linewidth.value,
|
|
markersize = slider_markersize.value,
|
|
)
|
|
|
|
# legend
|
|
cbl = Colorbar(
|
|
fig,
|
|
colormap = tr2d.linecolormap,
|
|
ticks = tr2d.lcolorticks,
|
|
# ticklabelrotation = π / 2,
|
|
ticklabelsize = 10,
|
|
label = menu_lcolormapfunc.selection,
|
|
# vertical = false,
|
|
# flipaxis = false,
|
|
)
|
|
cbm = Colorbar(
|
|
fig,
|
|
colormap = tr2d.markercolormap,
|
|
ticks = tr2d.mcolorticks,
|
|
# ticklabelrotation = π / 2,
|
|
ticklabelsize = 10,
|
|
label = menu_mcolormapfunc.selection,
|
|
)
|
|
fig[1:2, 3] = grid!(
|
|
[0, 1] => Label(fig, "line", font = :bold),
|
|
[1, 1] => cbl,
|
|
[2, 1] => Label(fig, "marker", font = :bold),
|
|
[3, 1] => cbm,
|
|
tellheight = true,
|
|
)
|
|
|
|
inspector = DataInspector(tr2d)
|
|
inspector.attributes.enabled[] = false
|
|
|
|
on(menu_lcolormapfunc.selection) do s
|
|
if s == "log"
|
|
tr2d.lcolormapfunc[] = ColorMapFuncs.ColorMap()
|
|
elseif s == "altitude"
|
|
tr2d.lcolormapfunc[] = ColorMapFuncs.Altitude()
|
|
elseif s == "date"
|
|
tr2d.lcolormapfunc[] = ColorMapFuncs.Date()
|
|
elseif s == "constant"
|
|
tr2d.lcolormapfunc[] = lineconstcolor[]
|
|
end
|
|
end
|
|
on(lineconstcolor) do c
|
|
tr2d.lcolormapfunc[] = c
|
|
end
|
|
on(menu_mcolormapfunc.selection) do s
|
|
if s == "log"
|
|
tr2d.mcolormapfunc[] = ColorMapFuncs.ColorMap()
|
|
elseif s == "altitude"
|
|
tr2d.mcolormapfunc[] = ColorMapFuncs.Altitude()
|
|
elseif s == "date"
|
|
tr2d.mcolormapfunc[] = ColorMapFuncs.Date()
|
|
elseif s == "constant"
|
|
tr2d.mcolormapfunc[] = markerconstcolor[]
|
|
end
|
|
end
|
|
on(markerconstcolor) do c
|
|
tr2d.mcolormapfunc[] = c
|
|
end
|
|
on(button_reset.clicks) do n
|
|
reset_limits!(ax)
|
|
# slider_markersize.value[] = 5
|
|
# slider_linewidth.value[] = 1
|
|
# toggle_line.active[] = true
|
|
# toggle_marker.active[] = false
|
|
end
|
|
on(textbox_linecolormap.stored_string) do s
|
|
tr2d.linecolormap[] = ColorSchemes.colorschemes[Symbol(s)]
|
|
end
|
|
on(textbox_markercolormap.stored_string) do s
|
|
tr2d.markercolormap[] = ColorSchemes.colorschemes[Symbol(s)]
|
|
end
|
|
on(toggle_inspector.active) do f
|
|
inspector.attributes.enabled[] = f
|
|
end
|
|
|
|
connect!(tr2d.showline, toggle_line.active)
|
|
connect!(tr2d.showmarker, toggle_marker.active)
|
|
|
|
display(fig)
|