dk-zen
March 27, 2025, 2:50am
1
I want to get xlabel like “HH:MM”, Part of my code as follows. It doesn’t work as I want, but without throwing out an error. Anyone can give some suggestions?
fig = Figure(; size=(1000, 600))
ax1 = Axis(fig[1, 1], ylabel="H[nT]")
ax2 = Axis(fig[2, 1], ylabel="Z[nT]")
dates = DateTime("2025-03-19"):Hour(3):DateTime("2025-03-20")
tick_positions = datetime2unix.(dates) # Convert dates to Unix time (positions)
tick_labels = Dates.format.(dates, "HH:MM")
ax3 = Axis(fig[3, 1],
xlabel="Time_UT",
ylabel="D[nT]",
xticks = (tick_positions, tick_labels),
yticklabelspace = 36.0
)
linkxaxes!(ax1, ax2, ax3)
lines!(ax1, df.time, df.H, color=:red)
hidexdecorations!(ax1, grid=false, label=false)
lines!(ax2, df.time, df.Z, color=:red)
hidexdecorations!(ax2, grid=false, label=false)
lines!(ax3, df.time, df.D, color=:red)
fig
The result is like this.
dk-zen
March 27, 2025, 6:12am
3
Thanks a lot! Your suggestion works.
Makie cann’t support DateTime Type well. There is another way to avoid this issue, that is, transform DateTime data with datetime2unix function.
fig = Figure(; size=(1000, 600))
ax1 = Axis(fig[1, 1], ylabel="H[nT]")
ax2 = Axis(fig[2, 1], ylabel="Z[nT]")
dates = DateTime("2025-03-19"):Hour(3):DateTime("2025-03-20")
tick_positions = datetime2unix.(dates) # Convert dates to Unix time (positions)
# tick_labels = Dates.format.(dates)
tick_labels = ["$(Dates.format(t, "HH:MM") )\n $(Dates.format(t, "yyyy/mm/dd") )" for t in dates]
ax3 = Axis(fig[3, 1],
xlabel="Time_UT",
ylabel="D[nT]",
xticks = (tick_positions, tick_labels),
yticklabelspace = 36.0
# xticklabelrotation=pi / 4)
)
linkxaxes!(ax1, ax2, ax3)
lines!(ax1, datetime2unix.(df.time), df.H, color=:red)
hidexdecorations!(ax1, grid=false, label=false)
lines!(ax2, datetime2unix.(df.time), df.Z, color=:red)
hidexdecorations!(ax2, grid=false, label=false)
lines!(ax3, datetime2unix.(df.time), df.D, color=:red)
fig
3 Likes