Skip to content

Instantly share code, notes, and snippets.

@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
[{"snippet_range":[93084,93723],"snippet":"\n“He wants payin’ fer deliverin’ the paper. Look in the \npockets.” \nHagrid ’s coat seemed to be made of nothing but \npockets — bunches of keys, slug pellets, balls of \nstring, peppermint humbugs, teabags ... finally, Harry \npulled out a handful of strange-looking coins. \n“Give him five Knuts,” said Hagrid sleepily. \n“Knuts?” \n“The little bronze ones.” \nHarry counted out five little bronze coins, and the owl \nheld out his leg so Harry could put the money into a \n\nsmall leather pouch tied to it. Then he flew off \nthrough the open window. \nHagrid yawned loudly, sat up, and stretched. \n“Best be off, Harry, lots t","response":"Item,Galleons,Sickles,Knuts\n\"Owl Delivery\",0,0,5"},{"snippet_range":[106718,107323],"snippet":"ht more eyes. He \nturned his head in every direction as they walked up \nthe street, trying to look at everything at once: the \nshops, the things outside them, the people doing their \nshopping. A plump woman outside an Apothecary \nwa
s = Scene(camera = campixel!)
nodes = Point2f[(100, 100), (200, 300), (100, 400), (500, 400)]
for i in 1:length(nodes)-1
for j in i+1:length(nodes)
linesegments!(s, nodes[[i, j]])
end
end
f = Figure()
ax = Axis(f[1, 1])
sc = scatter!(randn(10, 2), label = "Points")
text!(randn(10, 2), text = ["hey" for _ in 1:10], color = :red)
leg = Legend(f[1, 2], [sc, []], ["Points", "Location of heys"])
legscene = leg.blockscene.children[1]
leg.grid[1, 1][2, 1] = Label(legscene, "hey", color = :red)
notify(leg.margin) # adjust to new legend size without relayout
f
function with_indent_message(f, message)
s = mktemp() do path, io
redirect_stdout(f, io)
flush(io)
str = read(path, String)
if match(r"^\s*$", str) === nothing
replace(str, r"^"m => "│ ")
else
""
end
using Makie.KernelDensity
x = randn(1000)
k = kde(x, npoints = 200)
f = Figure()
ax = Axis3(f[1, 1], limits = (-4, 4, -4, 4, 0, 1))
p = poly!(ax, Point2f.(k.x, k.density),
model = Makie.Mat4f([ 1 0 0 0
0 0 1 4
f = Figure()
ax = Axis(f[1, 1])
ax2 = Axis(f[1, 1], width = Relative(0.3), height = Relative(0.3), valign = 0.8, halign = 0.8)
p = Point(1, 1)
scatter!(ax, p, markersize = 15)
limits!(ax, 0, 10, 0, 10)
points = lift(ax.scene.px_area, ax.scene.camera.projectionview, ax2.scene.px_area) do pxa, pv, pxa2
p1 = Makie.bottomright(pxa2) - pxa.origin