Formatting Ticks in Julia

How to format axes ticks in Julia with Plotly.


Plotly is known for its graphing libraries, but it's also a broader ecosystem for building interactive data apps, AI data analysis tools, and deploying and hosting Dash apps. Explore the full set of tools and platforms designed to help turn data into action. Discover Plotly.

Note: We are retiring documentation for R, MATLAB, Julia, and F#. Learn more about this change here.

Tickmode - Linear

If "linear", the placement of the ticks is determined by a starting position tick0 and a tick step dtick

using PlotlyJS

fig = plot(scatter(
    x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
    y = [28.8, 28.5, 37, 56.8, 69.7, 79.7, 78.5, 77.8, 74.1, 62.6, 45.3, 39.9]
))

relayout!(fig,
    xaxis = attr(
        tickmode = "linear",
        tick0 = 0.5,
        dtick = 0.75
    )
)

fig

Tickmode - Array

If "array", the placement of the ticks is set via tickvals and the tick text is ticktext.

using PlotlyJS

fig = plot(scatter(
    x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
    y = [28.8, 28.5, 37, 56.8, 69.7, 79.7, 78.5, 77.8, 74.1, 62.6, 45.3, 39.9]
))

relayout!(fig,
    xaxis = attr(
        tickmode = "array",
        tickvals = [1, 3, 5, 7, 9, 11],
        ticktext = ["One", "Three", "Five", "Seven", "Nine", "Eleven"]
    )
)

fig

Using Tickformat Attribute

For more formatting types, see: https://github.com/d3/d3-format/blob/master/README.md#locale_format

using PlotlyJS

fig = plot(scatter(
    x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
    y = [28.8, 28.5, 37, 56.8, 69.7, 79.7, 78.5, 77.8, 74.1, 62.6, 45.3, 39.9]
))

relayout!(fig, yaxis_tickformat = "%")

fig

Using Tickformat Attribute - Date/Time

For more date/time formatting types, see: https://github.com/d3/d3-time-format/blob/master/README.md

using PlotlyJS, DataFrames, CSV, HTTP

df = CSV.File(
    HTTP.get("https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv").body
) |> DataFrame

fig = plot(df, kind="scatter", x=:Date, y=df[!, "AAPL.High"])

relayout!(fig, title = "Time Series with Custom Date-Time Format",
    xaxis_tickformat = "%d %B (%a)<br>%Y")

fig

Using Exponentformat Attribute

using PlotlyJS

fig = plot(scatter(
    x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
    y = [68000, 52000, 60000, 20000, 95000, 40000, 60000, 79000, 74000, 42000, 20000, 90000]
))

relayout!(fig,
    yaxis =attr(
        showexponent = "all",
        exponentformat = "e"
    )
)

fig

Tickformatstops to customize for different zoom levels

using PlotlyJS, DataFrames, CSV, HTTP

df = CSV.File(
    HTTP.get("https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv").body
) |> DataFrame

fig = plot(df,
    kind="scatter",
    x=:Date,
    y=:mavg
)

relayout!(fig,
    xaxis_tickformatstops = [
        attr(dtickrange=[missing, 1000], value="%H:%M:%S.%L ms"),
        attr(dtickrange=[1000, 60000], value="%H:%M:%S s"),
        attr(dtickrange=[60000, 3600000], value="%H:%M m"),
        attr(dtickrange=[3600000, 86400000], value="%H:%M h"),
        attr(dtickrange=[86400000, 604800000], value="%e. %b d"),
        attr(dtickrange=[604800000, "M1"], value="%e. %b w"),
        attr(dtickrange=["M1", "M12"], value="%b '%y M"),
        attr(dtickrange=["M12", missing], value="%Y Y")
    ]
)

fig

Placing ticks and gridlines between categories

using PlotlyJS

fig = plot(bar(
    x = ["apples", "oranges", "pears"],
    y = [1, 2, 3]
))

update_xaxes!(
    fig,
    showgrid=true,
    ticks="outside",
    tickson="boundaries",
    ticklen=20
)

fig

Reference

See https://plotly.com/julia/reference/layout/xaxis/ for more information and chart attribute options!