barplot
barplot(x, y; kwargs...)
Plots a barplot; y
defines the height. x
and y
should be 1 dimensional. Bar width is determined by the attribute width
, shrunk by gap
in the following way: width -> width * (1 - gap)
.
Attributes
Available attributes and their defaults for Plot{Makie.barplot}
are:
alpha 1.0
bar_labels "nothing"
color RGBA{Float32}(0.0f0,0.0f0,0.0f0,0.6f0)
color_over_background MakieCore.Automatic()
color_over_bar MakieCore.Automatic()
colormap :viridis
colorrange MakieCore.Automatic()
colorscale identity
cycle [:color => :patchcolor]
direction :y
dodge MakieCore.Automatic()
dodge_gap 0.03
fillto MakieCore.Automatic()
flip_labels_at Inf
gap 0.2
highclip MakieCore.Automatic()
inspectable true
label_align MakieCore.Automatic()
label_color :black
label_font :regular
label_formatter Makie.bar_label_formatter
label_offset 5
label_rotation 0.0
label_size 14
lowclip MakieCore.Automatic()
marker GeometryBasics.HyperRectangle
n_dodge MakieCore.Automatic()
nan_color :transparent
offset 0.0
stack MakieCore.Automatic()
strokecolor :black
strokewidth 0
transparency false
visible true
width MakieCore.Automatic()
Examples
using CairoMakie
f = Figure()
Axis(f[1, 1])
xs = 1:0.2:10
ys = 0.5 .* sin.(xs)
barplot!(xs, ys, color = :red, strokecolor = :black, strokewidth = 1)
barplot!(xs, ys .- 1, fillto = -1, color = xs, strokecolor = :black, strokewidth = 1)
f
using CairoMakie
xs = 1:0.2:10
ys = 0.5 .* sin.(xs)
barplot(xs, ys, gap = 0, color = :gray85, strokecolor = :black, strokewidth = 1)
using CairoMakie
tbl = (cat = [1, 1, 1, 2, 2, 2, 3, 3, 3],
height = 0.1:0.1:0.9,
grp = [1, 2, 3, 1, 2, 3, 1, 2, 3],
grp1 = [1, 2, 2, 1, 1, 2, 1, 1, 2],
grp2 = [1, 1, 2, 1, 2, 1, 1, 2, 1]
)
barplot(tbl.cat, tbl.height,
stack = tbl.grp,
color = tbl.grp,
axis = (xticks = (1:3, ["left", "middle", "right"]),
title = "Stacked bars"),
)
barplot(tbl.cat, tbl.height,
dodge = tbl.grp,
color = tbl.grp,
axis = (xticks = (1:3, ["left", "middle", "right"]),
title = "Dodged bars"),
)
barplot(tbl.cat, tbl.height,
dodge = tbl.grp1,
stack = tbl.grp2,
color = tbl.grp,
axis = (xticks = (1:3, ["left", "middle", "right"]),
title = "Dodged and stacked bars"),
)
colors = Makie.wong_colors()
# Figure and Axis
fig = Figure()
ax = Axis(fig[1,1], xticks = (1:3, ["left", "middle", "right"]),
title = "Dodged bars with legend")
# Plot
barplot!(ax, tbl.cat, tbl.height,
dodge = tbl.grp,
color = colors[tbl.grp])
# Legend
labels = ["group 1", "group 2", "group 3"]
elements = [PolyElement(polycolor = colors[i]) for i in 1:length(labels)]
title = "Groups"
Legend(fig[1,2], elements, labels, title)
fig
barplot(
tbl.cat, tbl.height,
dodge = tbl.grp,
color = tbl.grp,
bar_labels = :y,
axis = (xticks = (1:3, ["left", "middle", "right"]),
title = "Dodged bars horizontal with labels"),
colormap = [:red, :green, :blue],
color_over_background=:red,
color_over_bar=:white,
flip_labels_at=0.85,
direction=:x,
)
barplot([-1, -0.5, 0.5, 1],
bar_labels = :y,
axis = (title="Fonts + flip_labels_at",),
label_size = 20,
flip_labels_at=(-0.8, 0.8),
label_color=[:white, :green, :black, :white],
label_formatter = x-> "Flip at $(x)?",
label_offset = 10
)
using CairoMakie
#Gantt data
gantt = (
machine = [1,2,1,2],
job = [1,1,2,3],
task = [1,2,3,3],
start = [1, 3, 3.5, 5],
stop = [3, 4, 5, 6]
)
#Figure and axis
fig = Figure()
ax = Axis(
fig[2,1],
yticks = (1:2, ["A","B"]),
ylabel = "Machine",
xlabel = "Time"
)
xlims!(ax, 0, maximum(gantt.stop))
#Colors
colors = cgrad(:tab10)
#Plot bars
barplot!(
gantt.machine,
gantt.stop,
fillto = gantt.start,
direction = :x,
color = colors[gantt.job],
gap = 0.5
)
#Add labels
bar_labels = ["task #$i" for i in gantt.task]
text!(
["task #$i" for i in gantt.task],
position = Point2f.(
(gantt.start .+ gantt.stop) ./ 2,
gantt.machine
),
color = :white,
align = (:center, :center)
)
#Add Legend
labels = ["job #$i" for i in unique(gantt.job)]
elements = [PolyElement(polycolor = colors[i]) for i in unique(gantt.job)]
Legend(fig[1,1], elements, labels, "Jobs", orientation=:horizontal, tellwidth = false, tellheight = true)
fig
© Makie.jl. Last modified: May 07, 2024. Website built with Franklin.jl and the Julia programming language.
These docs were autogenerated using Makie: v0.20.10, GLMakie: v0.9.11, CairoMakie: v0.11.12, WGLMakie: v0.9.10