GeologicTime.jl

GeologicTimeModule

GeologicTime.jl

Documentation Documentation CI Codecov Aqua.jl Quality Assurance

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.

Geologic time scale from 100 Ma ago to now

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.

source

Lookup functions

GeologicTime.getunitFunction
getunit(name::AbstractString) :: String

Find the geochronologic unit of the geologic time.

Example

julia> getunit("Jurassic")
"Period"
source
GeologicTime.getcolorFunction
getcolor(name::AbstractString) :: String

Find the characteristic color (in hex value) for the geologic time.

Example

julia> getcolor("Jurassic")
"#34B2C9"
source
GeologicTime.getstartFunction
getstart(name::AbstractString) :: Float64

Find the start time (in million year) of the geologic time.

Example

julia> getstart("Jurassic")
201.4
source
GeologicTime.getstopFunction
getstop(name::AbstractString) :: Float64

Find the stop time (in million year) of the geologic time.

Example

julia> getstop("Jurassic")
145.0
source
GeologicTime.getspanFunction
getspan(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)
source
GeologicTime.getgeotimeFunction
getgeotime(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"
source
GeologicTime.prevFunction
prev(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
source
GeologicTime.nextFunction
next(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"
source

Plotting function

GeologicTime.drawtimescaleFunction
drawtimescale(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.

source