Skip to content

Instantly share code, notes, and snippets.

@jkrumbiegel
jkrumbiegel / unscaled_font_metrics_with_cairo.jl
Created April 18, 2020 07:06
Unscaled font metrics with Cairo
using FreeType
using FreeTypeAbstraction
using Cairo
function normalized_metrics(font, char)
# load char with NO_SCALE flag to receive font units
# which can be scaled by the units_per_EM
FT_Load_Char(font, char, FT_LOAD_NO_SCALE)
m = font.glyph.metrics
@jkrumbiegel
jkrumbiegel / ggplot_boxes_face_plot_cairomakie.jl
Created May 2, 2020 18:06
ggplot-like boxes with facet plot cairomakie
set_theme!(
fontsize = 10,
font = "SF Compact Text Light",
LAxis = (xticksize = 3, yticksize = 3, xticklabelrotation = pi/6,
xticklabelalign = (:right, :center), xlabelpadding = 2, ylabelpadding = 5),
LRect = (strokewidth = 1,)
)
scene, layout = layoutscene(10)
@jkrumbiegel
jkrumbiegel / textlayer_helper.jl
Last active August 31, 2020 14:01
MakieLayout textlayer helper
using AbstractPlotting
using AbstractPlotting.MakieLayout
using CairoMakie
##
function textlayer!(ax::LAxis)
pxa = lift(AbstractPlotting.zero_origin, ax.scene.px_area)
Scene(ax.scene, pxa, raw = true, camera = campixel!)
end
@jkrumbiegel
jkrumbiegel / makielayout_vector_theme.jl
Created May 20, 2020 06:12
makielayout vector theme
set_theme!(
font = "SF Display Compact Pro Light",
fontsize = 10,
rowgap = 12,
colgap = 12,
LAxis = (
xticksize = 3,
yticksize = 3,
xlabelpadding = 3,
ylabelpadding = 3,
using AbstractPlotting
using AbstractPlotting.MakieLayout
using GLMakie; GLMakie.activate!()
GLMakie.GLFW.WindowHint(GLMakie.GLFW.FLOATING, 1)
using LinearAlgebra
##
scene = Scene(center = false, raw = true, resolution = (800, 800))
@jkrumbiegel
jkrumbiegel / spanning_labels.jl
Created July 8, 2020 06:28
Facet layout with spanning labels
set_theme!(colgap = 30, rowgap = 30)
scene, layout = layoutscene(font = "SF Compact Light", fontsize = 25)
axs = layout[] = [LAxis(scene) for i in 1:4, j in 1:4]
hidexdecorations!.(axs[1:end-1, :], grid = false)
hideydecorations!.(axs[:, 2:end], grid = false)
group_left_protrusion = lift(
(xs...) -> maximum(y -> y.left, xs),
@jkrumbiegel
jkrumbiegel / margin_histogram_makielayout.jl
Created July 22, 2020 11:03
margin histogram in makielayout
using AbstractPlotting
using AbstractPlotting.MakieLayout
using StatsBase
##
scene, layout = layoutscene(resolution = (600, 600))
data = Node(randn(200, 2) * [1 2; 2 1])
@jkrumbiegel
jkrumbiegel / gridlayout_content.jl
Created July 24, 2020 06:32
Get content in gridlayouts
scene, layout = layoutscene(resolution = (800, 600))
sublayout1 = layout[1, 1] = GridLayout()
sublayout1[] = [LAxis(scene) for _ in zeros(3, 2)]
sublayout2 = layout[1, 2] = GridLayout()
sublayout2[] = [LAxis(scene) for _ in zeros(2, 2)]
function get_content(layout, rows, cols, side = MakieLayout.GridLayoutBase.Inner())
@jkrumbiegel
jkrumbiegel / layered_grid_anim.jl
Created July 31, 2020 10:05
layered.jl grid animations.jl
using Layered
using Animations
using VideoIO
using Colors
let
prev = pwd()
try
mktempdir() do path
cd(path)
using RCall
using AbstractPlotting
using AbstractPlotting.MakieLayout
using GLMakie
using EarCut
using AbstractPlotting.ColorSchemes
using AbstractPlotting.GeometryBasics
using PolygonOps