GeologicTime.jl
GeologicTime
— ModuleGeologicTime.jl
GeologicTime.jl is mainly designed to draw geologic time scale in a certain time interval using the function drawtimescale
. This function relies on PyPlot.jl, which needs to be manually installed and imported.
using GeologicTime
using PyPlot
figure(figsize=(5.4, 0.45))
drawtimescale(100, 0, [3, 4]; fontsize=8, texts = Dict(
"Cretaceous" => "Cretaceous", "Paleogene" => "Paleogene",
"Neogene" => "Neogene", "Quaternary" => "Q",
"Late Cretaceous" => "Late Cretaceous", "Paleocene" => "Paleoc.",
"Eocene" => "Eocene", "Oligocene" => "Oligoc.", "Miocene" => "Miocene",
"Pliocene" => "P", "Pleistocene" => "P"))
gca().set_position([0.02, 0.05, 0.96, 0.9])
savefig("timescale.png", dpi=300)
The code above generates the following image. In the argument list of drawtimescale
, 100
and 0
are two ends of the time interval, representing time in million year ago; [3, 4]
indicates the function to draw periods (code 3
) and epochs (code 4
) in the chart.
In addition, the package also provides simple lookup functions such as getunit
, getcolor
, getstart
, getstop
, getspan
, and getgeotime
, whose usage is explained in the documentation. These functions do not rely on PyPlot.jl –- they can be called once GeologicTime.jl is loaded.
Code and documentation of GeologicTime.jl are released under the MIT License. However, all the data are based on materials from Wikipedia accessed on April 23, 2023, available under the CC-SA 3.0 License. Credit of relevant files including data/wikipedia.html and its derivation data/timescale.tsv is due to Wikipedia contributors.
Lookup functions
GeologicTime.getunit
— Functiongetunit(name::AbstractString) :: String
Find the geochronologic unit of the geologic time.
Example
julia> getunit("Jurassic")
"Period"
GeologicTime.getcolor
— Functiongetcolor(name::AbstractString) :: String
Find the characteristic color (in hex value) for the geologic time.
Example
julia> getcolor("Jurassic")
"#34B2C9"
GeologicTime.getstart
— Functiongetstart(name::AbstractString) :: Float64
Find the start time (in million year) of the geologic time.
Example
julia> getstart("Jurassic")
201.4
GeologicTime.getstop
— Functiongetstop(name::AbstractString) :: Float64
Find the stop time (in million year) of the geologic time.
Example
julia> getstop("Jurassic")
145.0
GeologicTime.getspan
— Functiongetspan(name::AbstractString) :: NTuple{2, Float64}
Find the time span (both ends in million year) of the geologic time.
Example
julia> getspan("Jurassic")
(201.4, 145.0)
GeologicTime.getgeotime
— Functiongetgeotime(millionyears::Real, unit::Integer; bound=:forward) ::
Union{String, Nothing}
getgeotime(millionyears::Real; bound=:forward) ::
Vector{Pair{String, String}}
Find the geologic time of a certain unit
containing the given time moment (in million year).
The argument unit
must be 1
(eon), 2
(era), 3
(period), 4
(epoch), or 5
(age); bound
must be :forward
(default) or :backward
. When unit
is omitted, results of all possible units are packed up and returned.
When no geologic time contains the given time moment, nothing
is returned if unit
is specified, or the result is simply omitted in the returned vector.
Example
julia> getgeotime(39, 3)
"Paleogene"
julia> getgeotime(39)
5-element Vector{Pair{String, String}}:
"Eon" => "Phanerozoic"
"Era" => "Cenozoic"
"Period" => "Paleogene"
"Epoch" => "Eocene"
"Age" => "Bartonian"
julia> getgeotime(3900, 3) == nothing
true
julia> getgeotime(3900)
2-element Vector{Pair{String, String}}:
"Eon" => "Archean"
"Era" => "Eoarchean"
GeologicTime.prev
— Functionprev(name::AbstractString) :: Union{String, Nothing}
Find the previous (earlier) geologic time of the same unit. When the specified geologic time has no predecessor, nothing
is returned.
Example
julia> GeologicTime.prev("Phanerozoic")
"Proterozoic"
julia> GeologicTime.prev("Hadean") == nothing
true
GeologicTime.next
— Functionnext(name::AbstractString) :: Union{String, Nothing}
Find the next (later) geologic time of the same unit. When the specified geologic time has no successor, nothing
is returned.
Example
julia> GeologicTime.next("Phanerozoic") == nothing
true
julia> GeologicTime.next("Hadean")
"Archean"
Plotting function
GeologicTime.drawtimescale
— Functiondrawtimescale(ax,
s::Real, t::Real=0.0, units::AbstractVector{<:Integer}=[3,4];
facealpha=1.0, facezorder=-10, fillkwargs=Dict(),
edgealpha=1.0, lw=0.8, ls="-", edgecolor="k",
edgezorder=0, plotkwargs=Dict(),
texts=Dict(), ha="center", va="center", fontsize=10, textcolor="k",
textzorder=10, textkwargs=Dict()) :: Nothing
drawtimescale(s::Real, t::Real=0.0,
units::AbstractVector{<:Integer}=[3,4]; kwargs...) :: Nothing
Draw the geologic time scale from s
Ma ago to t
Ma ago (default 0
, i.e. now) of specified units
(default [3, 4]
, i.e. period and epoch).
The first argument ax
refers to a set of axes from PyPlot.jl. When it is omitted, the current set of axes is applied.