Skip to content

Instantly share code, notes, and snippets.

View jkrumbiegel's full-sized avatar

Julius Krumbiegel jkrumbiegel

View GitHub Profile
@jkrumbiegel
jkrumbiegel / makie_slideshow.jl
Created January 27, 2024 17:50
Makie slide show
using GLMakie
slides = [
(gl) -> begin
for i in 1:2, j in 1:2
lines(gl[i, j], cumsum(randn(1000)))
end
return (; title = "A slide with two Axis")
end,
(gl) -> begin
@jkrumbiegel
jkrumbiegel / multiple_insets.jl
Created January 26, 2024 08:21
multiple inset axes in gridlayout
f = Figure()
main_ax = Axis(f[1, 1])
inset_gl = GridLayout(f[1, 1], alignmode = Outside(15))
inset_ax_1 = Axis(inset_gl[1:2, 1])
Label(inset_gl[1:2, 1, Right()], "(a)", valign = :top, padding = (5, 0, 0, 0))
inset_ax_2 = Axis(inset_gl[1, 2])
Label(inset_gl[1, 2, Left()], "(b)", valign = :top, padding = (0, 5, 0, 0))
inset_ax_3 = Axis(inset_gl[2, 2])
Label(inset_gl[2, 2, Left()], "(c)", valign = :top, padding = (0, 5, 0, 0))
for ax in [inset_ax_1, inset_ax_2, inset_ax_3]
@jkrumbiegel
jkrumbiegel / one_billion_rows.jl
Last active February 1, 2024 16:33
One Billion Rows Challenge Julia
using Mmap
using InlineStrings
using Dictionaries
using Parsers
function aggregate(file)
open(file, "r") do io
arr = mmap(io)
@jkrumbiegel
jkrumbiegel / stepped_contourf_volcano_makie.jl
Created December 19, 2023 10:46
Stepped contourf volcano plot in Makie
using GLMakie
using DelimitedFiles
volcano = readdlm(Makie.assetpath("volcano.csv"), ',', Float64)
_, _, ct = contourf(volcano; colormap = :lipari, levels = 20)
polys = ct.plots[1][1][]
@jkrumbiegel
jkrumbiegel / makie_3d_transformed_bands.jl
Created December 12, 2023 12:01
Makie 3d transformed bands
using CairoMakie
f = Figure()
ax = Axis3(f[1, 1])
for i in 1:5
data = abs.(cumsum(randn(50))) .+ 1
b = band!(ax, 1:50, zero(data), data)
Makie.transform!(b, (:xz, -i))
@jkrumbiegel
jkrumbiegel / detect_png_dpi.jl
Created November 21, 2023 09:54
Julia detect png dpi
function detect_png_dpi(io::IO)
# PNG header signature
png_signature = UInt8['\u89', 'P', 'N', 'G', '\r', '\n', '\u1a', '\n']
# Reset the IO position to the beginning
seekstart(io)
# Check if the PNG signature is present
if [read(io, UInt8) for _ in 1:length(png_signature)] != png_signature
error("Not a png file")
@jkrumbiegel
jkrumbiegel / brackets_over_tick_labels.jl
Created November 16, 2023 07:21
Makie Axis brackets over tick labels
f = Figure()
ax = Axis(f[1, 1], xticks = 1:10)
textplot = ax.xaxis.elements[:ticklabels].plots[1].plots[1]
glyphcollections = textplot[1]
bracket!(ax.blockscene, lift(textplot.position, glyphcollections, textplot.rotation) do positions, gcs, rot
bboxes = map(positions, gcs) do pos, gc
Makie.boundingbox(gc, pos, Makie.to_rotation(rot))
end
f, _ = lines(0..8, sin, color = :blue, linewidth = 10)
lines!(0..8, cos, color = :red, alpha = 0.5, linewidth = 10)
f
using CairoMakie
using Cairo
using Poppler_jll
@recipe(PDF) do scene
Attributes(
bbox = BBox(0, 100, 0, 100)
)
end
Item Galleons Sickles Knuts snippet_id
Triwizard Cup 1000 0 0 28
Prize Money 1000 0 0 29
Split the thousand Galleons 1000 0 0 32
Prize Money 1000 0 0 33
Goblet of Fire entry fee 1000 0 0 34
Winnings 1000 0 0 38
Canary Creams 1000 0 0 40
Triwizard Tournament Prize Money 1000 0 0 44
Wanted Poster 1000 0 0 64