document @shorthands functions
This commit is contained in:
parent
8951526d0d
commit
e6bb17dc86
92
src/Plots.jl
92
src/Plots.jl
@ -186,97 +186,7 @@ include("backends/plotly.jl")
|
|||||||
include("backends/gr.jl")
|
include("backends/gr.jl")
|
||||||
include("backends/web.jl")
|
include("backends/web.jl")
|
||||||
|
|
||||||
# ---------------------------------------------------------
|
include("shorthands.jl")
|
||||||
|
|
||||||
@shorthands scatter
|
|
||||||
@shorthands bar
|
|
||||||
@shorthands barh
|
|
||||||
@shorthands histogram
|
|
||||||
@shorthands barhist
|
|
||||||
@shorthands stephist
|
|
||||||
@shorthands scatterhist
|
|
||||||
@shorthands histogram2d
|
|
||||||
@shorthands density
|
|
||||||
@shorthands heatmap
|
|
||||||
@shorthands plots_heatmap
|
|
||||||
@shorthands hexbin
|
|
||||||
@shorthands sticks
|
|
||||||
@shorthands hline
|
|
||||||
@shorthands vline
|
|
||||||
@shorthands hspan
|
|
||||||
@shorthands vspan
|
|
||||||
@shorthands ohlc
|
|
||||||
@shorthands contour
|
|
||||||
@shorthands contourf
|
|
||||||
@shorthands contour3d
|
|
||||||
@shorthands surface
|
|
||||||
@shorthands wireframe
|
|
||||||
@shorthands path3d
|
|
||||||
@shorthands scatter3d
|
|
||||||
@shorthands boxplot
|
|
||||||
@shorthands violin
|
|
||||||
@shorthands quiver
|
|
||||||
@shorthands curves
|
|
||||||
|
|
||||||
"Plot a pie diagram"
|
|
||||||
pie(args...; kw...) = plot(args...; kw..., seriestype = :pie, aspect_ratio = :equal, grid=false, xticks=nothing, yticks=nothing)
|
|
||||||
pie!(args...; kw...) = plot!(args...; kw..., seriestype = :pie, aspect_ratio = :equal, grid=false, xticks=nothing, yticks=nothing)
|
|
||||||
|
|
||||||
"Plot with seriestype :path3d"
|
|
||||||
plot3d(args...; kw...) = plot(args...; kw..., seriestype = :path3d)
|
|
||||||
plot3d!(args...; kw...) = plot!(args...; kw..., seriestype = :path3d)
|
|
||||||
|
|
||||||
"Add title to an existing plot"
|
|
||||||
title!(s::AbstractString; kw...) = plot!(; title = s, kw...)
|
|
||||||
|
|
||||||
"Add xlabel to an existing plot"
|
|
||||||
xlabel!(s::AbstractString; kw...) = plot!(; xlabel = s, kw...)
|
|
||||||
|
|
||||||
"Add ylabel to an existing plot"
|
|
||||||
ylabel!(s::AbstractString; kw...) = plot!(; ylabel = s, kw...)
|
|
||||||
|
|
||||||
"Set xlims for an existing plot"
|
|
||||||
xlims!(lims::Tuple{T,S}; kw...) where {T<:Real,S<:Real} = plot!(; xlims = lims, kw...)
|
|
||||||
|
|
||||||
"Set ylims for an existing plot"
|
|
||||||
ylims!(lims::Tuple{T,S}; kw...) where {T<:Real,S<:Real} = plot!(; ylims = lims, kw...)
|
|
||||||
|
|
||||||
"Set zlims for an existing plot"
|
|
||||||
zlims!(lims::Tuple{T,S}; kw...) where {T<:Real,S<:Real} = plot!(; zlims = lims, kw...)
|
|
||||||
|
|
||||||
xlims!(xmin::Real, xmax::Real; kw...) = plot!(; xlims = (xmin,xmax), kw...)
|
|
||||||
ylims!(ymin::Real, ymax::Real; kw...) = plot!(; ylims = (ymin,ymax), kw...)
|
|
||||||
zlims!(zmin::Real, zmax::Real; kw...) = plot!(; zlims = (zmin,zmax), kw...)
|
|
||||||
|
|
||||||
|
|
||||||
"Set xticks for an existing plot"
|
|
||||||
xticks!(v::TicksArgs; kw...) where {T<:Real} = plot!(; xticks = v, kw...)
|
|
||||||
|
|
||||||
"Set yticks for an existing plot"
|
|
||||||
yticks!(v::TicksArgs; kw...) where {T<:Real} = plot!(; yticks = v, kw...)
|
|
||||||
|
|
||||||
xticks!(
|
|
||||||
ticks::AVec{T}, labels::AVec{S}; kw...) where {T<:Real,S<:AbstractString} = plot!(; xticks = (ticks,labels), kw...)
|
|
||||||
yticks!(
|
|
||||||
ticks::AVec{T}, labels::AVec{S}; kw...) where {T<:Real,S<:AbstractString} = plot!(; yticks = (ticks,labels), kw...)
|
|
||||||
|
|
||||||
"Add annotations to an existing plot"
|
|
||||||
annotate!(anns...; kw...) = plot!(; annotation = anns, kw...)
|
|
||||||
annotate!(anns::AVec{T}; kw...) where {T<:Tuple} = plot!(; annotation = anns, kw...)
|
|
||||||
|
|
||||||
"Flip the current plots' x axis"
|
|
||||||
xflip!(flip::Bool = true; kw...) = plot!(; xflip = flip, kw...)
|
|
||||||
|
|
||||||
"Flip the current plots' y axis"
|
|
||||||
yflip!(flip::Bool = true; kw...) = plot!(; yflip = flip, kw...)
|
|
||||||
|
|
||||||
"Specify x axis attributes for an existing plot"
|
|
||||||
xaxis!(args...; kw...) = plot!(; xaxis = args, kw...)
|
|
||||||
|
|
||||||
"Specify x axis attributes for an existing plot"
|
|
||||||
yaxis!(args...; kw...) = plot!(; yaxis = args, kw...)
|
|
||||||
xgrid!(args...; kw...) = plot!(; xgrid = args, kw...)
|
|
||||||
ygrid!(args...; kw...) = plot!(; ygrid = args, kw...)
|
|
||||||
|
|
||||||
let PlotOrSubplot = Union{Plot, Subplot}
|
let PlotOrSubplot = Union{Plot, Subplot}
|
||||||
global title!(plt::PlotOrSubplot, s::AbstractString; kw...) = plot!(plt; title = s, kw...)
|
global title!(plt::PlotOrSubplot, s::AbstractString; kw...) = plot!(plt; title = s, kw...)
|
||||||
|
|||||||
@ -10,7 +10,7 @@ const _arg_desc = KW(
|
|||||||
:linewidth => "Number. Width of the line (in pixels)",
|
:linewidth => "Number. Width of the line (in pixels)",
|
||||||
:linecolor => "Color Type. Color of the line (for path and bar stroke). `:match` will take the value from `:seriescolor`, (though histogram/bar types use `:black` as a default).",
|
:linecolor => "Color Type. Color of the line (for path and bar stroke). `:match` will take the value from `:seriescolor`, (though histogram/bar types use `:black` as a default).",
|
||||||
:linealpha => "Number in [0,1]. The alpha/opacity override for the line. `nothing` (the default) means it will take the alpha value of linecolor.",
|
:linealpha => "Number in [0,1]. The alpha/opacity override for the line. `nothing` (the default) means it will take the alpha value of linecolor.",
|
||||||
:fillrange => "Number or AbstractVector. Fills area from this to y for line-types, sets the base for bar/stick types, and similar for other types.",
|
:fillrange => "Number or AbstractVector. Fills area between fillrange and y for line-types, sets the base for bar/stick types, and similar for other types.",
|
||||||
:fillcolor => "Color Type. Color of the filled area of path or bar types. `:match` will take the value from `:seriescolor`.",
|
:fillcolor => "Color Type. Color of the filled area of path or bar types. `:match` will take the value from `:seriescolor`.",
|
||||||
:fillalpha => "Number in [0,1]. The alpha/opacity override for the fill area. `nothing` (the default) means it will take the alpha value of fillcolor.",
|
:fillalpha => "Number in [0,1]. The alpha/opacity override for the fill area. `nothing` (the default) means it will take the alpha value of fillcolor.",
|
||||||
:markershape => "Symbol, Shape, or AbstractVector. Choose from $(_allMarkers).",
|
:markershape => "Symbol, Shape, or AbstractVector. Choose from $(_allMarkers).",
|
||||||
@ -21,7 +21,7 @@ const _arg_desc = KW(
|
|||||||
:markerstrokewidth => "Number. Width of the marker stroke (border. in pixels)",
|
:markerstrokewidth => "Number. Width of the marker stroke (border. in pixels)",
|
||||||
:markerstrokecolor => "Color Type. Color of the marker stroke (border). `:match` will take the value from `:foreground_color_subplot`.",
|
:markerstrokecolor => "Color Type. Color of the marker stroke (border). `:match` will take the value from `:foreground_color_subplot`.",
|
||||||
:markerstrokealpha => "Number in [0,1]. The alpha/opacity override for the marker stroke (border). `nothing` (the default) means it will take the alpha value of markerstrokecolor.",
|
:markerstrokealpha => "Number in [0,1]. The alpha/opacity override for the marker stroke (border). `nothing` (the default) means it will take the alpha value of markerstrokecolor.",
|
||||||
:bins => "Integer, NTuple{2,Integer}, AbstractVector or Symbol. Default is :auto (the Freedman-Diaconis rule). For histogram-types, defines the approximate number of bins to aim for, or the auto-binning algorithm to use (:sturges, :sqrt, :rice, :scott or :fd). For fine-grained control pass a Vector of break values, e.g. `range(min(x), stop = extrema(x), length = 25)`",
|
:bins => "Integer, NTuple{2,Integer}, AbstractVector or Symbol. Default is :auto (the Freedman-Diaconis rule). For histogram-types, defines the approximate number of bins to aim for, or the auto-binning algorithm to use (:sturges, :sqrt, :rice, :scott or :fd). For fine-grained control pass a Vector of break values, e.g. `range(minimum(x), stop = maximum(x), length = 25)`",
|
||||||
:smooth => "Bool. Add a regression line?",
|
:smooth => "Bool. Add a regression line?",
|
||||||
:group => "AbstractVector. Data is split into a separate series, one for each unique value in `group`.",
|
:group => "AbstractVector. Data is split into a separate series, one for each unique value in `group`.",
|
||||||
:x => "Various. Input data. First Dimension",
|
:x => "Various. Input data. First Dimension",
|
||||||
@ -30,7 +30,7 @@ const _arg_desc = KW(
|
|||||||
:marker_z => "AbstractVector, Function `f(x,y,z) -> z_value`, or Function `f(x,y) -> z_value`, or nothing. z-values for each series data point, which correspond to the color to be used from a markercolor gradient.",
|
:marker_z => "AbstractVector, Function `f(x,y,z) -> z_value`, or Function `f(x,y) -> z_value`, or nothing. z-values for each series data point, which correspond to the color to be used from a markercolor gradient.",
|
||||||
:line_z => "AbstractVector, Function `f(x,y,z) -> z_value`, or Function `f(x,y) -> z_value`, or nothing. z-values for each series line segment, which correspond to the color to be used from a linecolor gradient. Note that for N points, only the first N-1 values are used (one per line-segment).",
|
:line_z => "AbstractVector, Function `f(x,y,z) -> z_value`, or Function `f(x,y) -> z_value`, or nothing. z-values for each series line segment, which correspond to the color to be used from a linecolor gradient. Note that for N points, only the first N-1 values are used (one per line-segment).",
|
||||||
:fill_z => "Matrix{Float64} of the same size as z matrix, which specifies the color of the 3D surface; the default value is `nothing`.",
|
:fill_z => "Matrix{Float64} of the same size as z matrix, which specifies the color of the 3D surface; the default value is `nothing`.",
|
||||||
:levels => "Integer, NTuple{2,Integer}. Number of levels (or x-levels/y-levels) for a contour type.",
|
:levels => "Integer, NTuple{2,Integer}, or AbstractVector. Levels or number of levels (or x-levels/y-levels) for a contour type.",
|
||||||
:orientation => "Symbol. Horizontal or vertical orientation for bar types. Values `:h`, `:hor`, `:horizontal` correspond to horizontal (sideways, anchored to y-axis), and `:v`, `:vert`, and `:vertical` correspond to vertical (the default).",
|
:orientation => "Symbol. Horizontal or vertical orientation for bar types. Values `:h`, `:hor`, `:horizontal` correspond to horizontal (sideways, anchored to y-axis), and `:v`, `:vert`, and `:vertical` correspond to vertical (the default).",
|
||||||
:bar_position => "Symbol. Choose from `:overlay` (default), `:stack`. (warning: May not be implemented fully)",
|
:bar_position => "Symbol. Choose from `:overlay` (default), `:stack`. (warning: May not be implemented fully)",
|
||||||
:bar_width => "nothing or Number. Width of bars in data coordinates. When nothing, chooses based on x (or y when `orientation = :h`).",
|
:bar_width => "nothing or Number. Width of bars in data coordinates. When nothing, chooses based on x (or y when `orientation = :h`).",
|
||||||
@ -98,7 +98,7 @@ const _arg_desc = KW(
|
|||||||
:legendfont => "Font. Font of legend items.",
|
:legendfont => "Font. Font of legend items.",
|
||||||
:annotations => "(x,y,text) tuple(s). Can be a single tuple or a list of them. Text can be String or PlotText (created with `text(args...)`) Add one-off text annotations at the x,y coordinates.",
|
:annotations => "(x,y,text) tuple(s). Can be a single tuple or a list of them. Text can be String or PlotText (created with `text(args...)`) Add one-off text annotations at the x,y coordinates.",
|
||||||
:projection => "Symbol or String. '3d' or 'polar'",
|
:projection => "Symbol or String. '3d' or 'polar'",
|
||||||
:aspect_ratio => "Symbol (:equal) or Number. Plot area is resized so that 1 y-unit is the same size as `apect_ratio` x-units.",
|
:aspect_ratio => "Symbol (:equal) or Number. Plot area is resized so that 1 y-unit is the same size as `aspect_ratio` x-units.",
|
||||||
:margin => "Measure (multiply by `mm`, `px`, etc). Base for individual margins... not directly used. Specifies the extra padding around subplots.",
|
:margin => "Measure (multiply by `mm`, `px`, etc). Base for individual margins... not directly used. Specifies the extra padding around subplots.",
|
||||||
:left_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding to the left of the subplot.",
|
:left_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding to the left of the subplot.",
|
||||||
:top_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding on the top of the subplot.",
|
:top_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding on the top of the subplot.",
|
||||||
|
|||||||
@ -256,7 +256,25 @@ mutable struct Font
|
|||||||
color::Colorant
|
color::Colorant
|
||||||
end
|
end
|
||||||
|
|
||||||
"Create a Font from a list of unordered features"
|
"""
|
||||||
|
font(args...)
|
||||||
|
|
||||||
|
Create a Font from an unordered list of features.
|
||||||
|
|
||||||
|
# Arguments
|
||||||
|
|
||||||
|
- `family`: AbstractString. "serif" or "sans-serif" or "monospace"
|
||||||
|
- `pointsize`: Integer. Size of font in points
|
||||||
|
- `halign`: Symbol. Horizontal alignment (:hcenter, :left, or :right)
|
||||||
|
- `valign`: Symbol. Vertical aligment (:vcenter, :top, or :bottom)
|
||||||
|
- `rotation`: Real. Angle of rotation for text in degrees (use a non-integer type)
|
||||||
|
- `color`: Colorant or Symbol
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
```julia-repl
|
||||||
|
julia> text("sans-serif",8,:hcenter,45.0,:blue)
|
||||||
|
```
|
||||||
|
"""
|
||||||
function font(args...)
|
function font(args...)
|
||||||
|
|
||||||
# defaults
|
# defaults
|
||||||
|
|||||||
37
src/utils.jl
37
src/utils.jl
@ -1199,3 +1199,40 @@ end
|
|||||||
function construct_categorical_data(x::AbstractArray, axis::Axis)
|
function construct_categorical_data(x::AbstractArray, axis::Axis)
|
||||||
map(xi -> axis[:discrete_values][searchsortedfirst(axis[:continuous_values], xi)], x)
|
map(xi -> axis[:discrete_values][searchsortedfirst(axis[:continuous_values], xi)], x)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
_fmt_paragraph(paragraph::AbstractString;kwargs...) = _fmt_paragraph(IOBuffer(),paragraph,0;kwargs...)
|
||||||
|
|
||||||
|
function _fmt_paragraph(io::IOBuffer,
|
||||||
|
remaining_text::AbstractString,
|
||||||
|
column_count::Integer;
|
||||||
|
fillwidth=60,
|
||||||
|
leadingspaces=0)
|
||||||
|
|
||||||
|
kwargs = (fillwidth = fillwidth, leadingspaces = leadingspaces)
|
||||||
|
|
||||||
|
m = match(r"(.*?) (.*)",remaining_text)
|
||||||
|
if isa(m,Nothing)
|
||||||
|
if column_count + length(remaining_text) ≤ fillwidth
|
||||||
|
print(io,remaining_text)
|
||||||
|
String(take!(io))
|
||||||
|
else
|
||||||
|
print(io,"\n"*" "^leadingspaces*remaining_text)
|
||||||
|
String(take!(io))
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if column_count + length(m[1]) ≤ fillwidth
|
||||||
|
print(io,"$(m[1]) ")
|
||||||
|
_fmt_paragraph(io,m[2],column_count + length(m[1]) + 1;kwargs...)
|
||||||
|
else
|
||||||
|
print(io,"\n"*" "^leadingspaces*"$(m[1]) ")
|
||||||
|
_fmt_paragraph(io,m[2],leadingspaces;kwargs...)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function _document_argument(S::AbstractString)
|
||||||
|
_fmt_paragraph("`$S`: "*_arg_desc[Symbol(S)],leadingspaces = 6 + length(S))
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user