knitr::opts_chunk$set(cache = TRUE, dev = c("png", "pdf"))
library(dplyr)
library(euctraits)
library(ggplot2)
Collections
qplot(reorder(taxon, taxon, function(x) -length(x)),
data = distinct(traits_southeast, tree, taxon), xlab = "",
main = "Eucalypt taxa collected", ylab = "Number of trees") +
theme(axis.text.x = element_text(size = 6, angle = 55, vjust = 1, hjust = 1))

qplot(altitude_m, data = distinct(traits_southeast, tree, altitude_m),
binwidth = 100, xlab = "Elevation (mASL)", ylab = "Number of trees",
main = "Distribution of eucalypt collection elevations")

Tree traits
Size
qplot(height_m,
data = summarise_traits_by(traits_southeast, tree, taxon, height_m),
bins = 15, xlab = "Height (m)", ylab = "Number of trees",
main = "Distribution of eucalypt tree height")

qplot(girth_cm,
data = summarise_traits_by(traits_southeast, tree, taxon, girth_cm),
bins = 15, xlab = "Girth (cm)", ylab = "Number of trees",
main = "Distribution of eucalypt tree girth")

qplot(girth_cm, height_m,
data = summarise_traits_by(
traits_southeast, tree, taxon, c(girth_cm, height_m)
),
xlab = "Girth (cm)", ylab = "Height (m)", log = "xy",
main = "Eucalypt tree height vs. girth")

Bark
qplot(bark_thickness_mm,
data = summarise_traits_by(
traits_southeast, tree, taxon, bark_thickness_mm
), bins = 15,
xlab = "Mean Bark Thickness (mm)", ylab = "Number of trees",
main = "Distribution of eucalypt tree bark thickness")

qplot(girth_cm, bark_thickness_mm,
data = summarise_traits_by(
traits_southeast, tree, taxon, c(girth_cm, bark_thickness_mm)
),
xlab = "Girth (cm)", ylab = "Mean Bark Thickness (mm)", log = "xy",
main = "Eucalypt tree bark thickness vs. girth")

Taxon traits
Leaves
qplot(leaf_area_cm2,
data = summarise_traits_by(traits_southeast, c(tree, taxon)), bins = 20,
xlab = "Leaf area (cm\u00b2)", ylab = "Number of taxa",
main = "Distribution of eucalypt leaf area")

qplot(leaf_mass_g,
data = summarise_traits_by(traits_southeast, c(tree, taxon)), bins = 20,
xlab = "Leaf mass (g)", ylab = "Number of taxa",
main = "Distribution of eucalypt leaf mass")

qplot(leaf_area_cm2, leaf_mass_g,
data = summarise_traits_by(traits_southeast, c(tree, taxon)),
xlab = "Leaf area (cm\u00b2)", ylab = "Leaf mass (g)", log = "xy",
main = "Eucalypt leaf area vs. leaf mass")

qplot(sla_mm2_per_mg,
data = summarise_traits_by(traits_southeast, c(tree, taxon)),
bins = 15, xlab = "SLA (mm\u00b2 mg\u207b\u00b9)",
ylab = "Number of taxa", main = "Distribution of eucalypt SLA")

Stems
qplot(stem_density_g_per_ml,
data = summarise_traits_by(traits_southeast, c(tree, taxon)),
bins = 15, xlab = "Stem density (g ml\u207b\u00b9)",
ylab = "Number of taxa", main = "Distribution of eucalypt stem density")

Fruit
qplot(fruit_mass_mg,
data = summarise_traits_by(traits_southeast, c(tree, taxon)), bins = 15,
log = "x", xlab = "Fruit dry mass (mg)", ylab = "Number of taxa",
main = "Distribution of eucalypt fruit mass")

qplot(fruit_wall_width_mm,
data = summarise_traits_by(traits_southeast, c(tree, taxon)), bins = 15,
log = "x", xlab = "Fruit wall width (mm)", ylab = "Number of taxa",
main = "Distribution of eucalypt fruit wall thickness")

Seeds
qplot(seed_mass_mg,
data = summarise_traits_by(traits_southeast, c(tree, taxon)),
bins = 15, log = "x", xlab = "Seed mass (mg)", ylab = "Number of taxa",
main = "Distribution of eucalypt seed mass")

IycgLS0tCiMnIHRpdGxlOiAiRXVjYWx5cHQgdHJhaXRzIG9mIFNvdXRoLWVhc3QgQXVzdHJhbGlhIgojJyBhdXRob3I6ICJXaWxsaWFtIEsuIE1vcnJpcyAmIFBldGVyIEEuIFZlc2siCiMnIGRhdGU6ICJgciBTeXMuRGF0ZSgpYCIKIycgb3V0cHV0OgojJyAgIHJtYXJrZG93bjo6aHRtbF9ub3RlYm9vazoKIycgICAgIGNvZGVfZm9sZGluZzogaGlkZQojJyAtLS0KCiMrIHNldHVwLCBtZXNzYWdlPUZBTFNFCmtuaXRyOjpvcHRzX2NodW5rJHNldChjYWNoZSA9IFRSVUUsIGRldiA9IGMoInBuZyIsICJwZGYiKSkKbGlicmFyeShkcGx5cikKbGlicmFyeShldWN0cmFpdHMpCmxpYnJhcnkoZ2dwbG90MikKCiMnICMgQ29sbGVjdGlvbnMKIysgdGF4YSwgbWVzc2FnZSA9IEZBTFNFLCB3YXJuaW5nID0gRkFMU0UKcXBsb3QocmVvcmRlcih0YXhvbiwgdGF4b24sIGZ1bmN0aW9uKHgpIC1sZW5ndGgoeCkpLAogICAgICBkYXRhID0gZGlzdGluY3QodHJhaXRzX3NvdXRoZWFzdCwgdHJlZSwgdGF4b24pLCB4bGFiID0gIiIsCiAgICAgIG1haW4gPSAiRXVjYWx5cHQgdGF4YSBjb2xsZWN0ZWQiLCB5bGFiID0gIk51bWJlciBvZiB0cmVlcyIpICsKdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDYsIGFuZ2xlID0gNTUsIHZqdXN0ID0gMSwgaGp1c3QgPSAxKSkKCiMrIGFsdGl0dWRlLCBtZXNzYWdlID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRQpxcGxvdChhbHRpdHVkZV9tLCBkYXRhID0gZGlzdGluY3QodHJhaXRzX3NvdXRoZWFzdCwgdHJlZSwgYWx0aXR1ZGVfbSksCiAgICAgIGJpbndpZHRoID0gMTAwLCB4bGFiID0gIkVsZXZhdGlvbiAobUFTTCkiLCB5bGFiID0gIk51bWJlciBvZiB0cmVlcyIsCiAgICAgIG1haW4gPSAiRGlzdHJpYnV0aW9uIG9mIGV1Y2FseXB0IGNvbGxlY3Rpb24gZWxldmF0aW9ucyIpCgojJyAjIFRyZWUgdHJhaXRzCiMnICMjIFNpemUKIysgaGVpZ2h0LXRyZWUsIHdhcm5pbmcgPSBGQUxTRQpxcGxvdChoZWlnaHRfbSwKICAgICAgZGF0YSA9IHN1bW1hcmlzZV90cmFpdHNfYnkodHJhaXRzX3NvdXRoZWFzdCwgdHJlZSwgdGF4b24sIGhlaWdodF9tKSwKICAgICAgYmlucyA9IDE1LCB4bGFiID0gIkhlaWdodCAobSkiLCB5bGFiID0gIk51bWJlciBvZiB0cmVlcyIsCiAgICAgIG1haW4gPSAiRGlzdHJpYnV0aW9uIG9mIGV1Y2FseXB0IHRyZWUgaGVpZ2h0IikKCiMrIGdpcnRoLXRyZWUsIHdhcm5pbmcgPSBGQUxTRQpxcGxvdChnaXJ0aF9jbSwKICAgICAgZGF0YSA9IHN1bW1hcmlzZV90cmFpdHNfYnkodHJhaXRzX3NvdXRoZWFzdCwgdHJlZSwgdGF4b24sIGdpcnRoX2NtKSwKICAgICAgYmlucyA9IDE1LCB4bGFiID0gIkdpcnRoIChjbSkiLCB5bGFiID0gIk51bWJlciBvZiB0cmVlcyIsCiAgICAgIG1haW4gPSAiRGlzdHJpYnV0aW9uIG9mIGV1Y2FseXB0IHRyZWUgZ2lydGgiKQoKIysgZ2lydGgteC1oZWlnaHQtdHJlZSwgd2FybmluZyA9IEZBTFNFCnFwbG90KGdpcnRoX2NtLCBoZWlnaHRfbSwKICAgICAgZGF0YSA9IHN1bW1hcmlzZV90cmFpdHNfYnkoCiAgICAgICAgdHJhaXRzX3NvdXRoZWFzdCwgdHJlZSwgdGF4b24sIGMoZ2lydGhfY20sIGhlaWdodF9tKQogICAgICApLAogICAgICB4bGFiID0gIkdpcnRoIChjbSkiLCB5bGFiID0gIkhlaWdodCAobSkiLCBsb2cgPSAieHkiLAogICAgICBtYWluID0gIkV1Y2FseXB0IHRyZWUgaGVpZ2h0IHZzLiBnaXJ0aCIpCgojJyAjIyBCYXJrCiMrIGJhcmstdHJlZSwgd2FybmluZyA9IEZBTFNFCnFwbG90KGJhcmtfdGhpY2tuZXNzX21tLAogICAgICBkYXRhID0gc3VtbWFyaXNlX3RyYWl0c19ieSgKICAgICAgICB0cmFpdHNfc291dGhlYXN0LCB0cmVlLCB0YXhvbiwgYmFya190aGlja25lc3NfbW0KICAgICAgKSwgYmlucyA9IDE1LAogICAgICB4bGFiID0gIk1lYW4gQmFyayBUaGlja25lc3MgKG1tKSIsIHlsYWIgPSAiTnVtYmVyIG9mIHRyZWVzIiwKICAgICAgbWFpbiA9ICJEaXN0cmlidXRpb24gb2YgZXVjYWx5cHQgdHJlZSBiYXJrIHRoaWNrbmVzcyIpCgojKyBnaXJ0aC14LWJhcmstdHJlZSwgd2FybmluZyA9IEZBTFNFCnFwbG90KGdpcnRoX2NtLCBiYXJrX3RoaWNrbmVzc19tbSwKICAgICAgZGF0YSA9IHN1bW1hcmlzZV90cmFpdHNfYnkoCiAgICAgICAgdHJhaXRzX3NvdXRoZWFzdCwgdHJlZSwgdGF4b24sICBjKGdpcnRoX2NtLCBiYXJrX3RoaWNrbmVzc19tbSkKICAgICAgKSwKICAgICAgeGxhYiA9ICJHaXJ0aCAoY20pIiwgeWxhYiA9ICJNZWFuIEJhcmsgVGhpY2tuZXNzIChtbSkiLCBsb2cgPSAieHkiLAogICAgICBtYWluID0gIkV1Y2FseXB0IHRyZWUgYmFyayB0aGlja25lc3MgdnMuIGdpcnRoIikKCiMnICMgVGF4b24gdHJhaXRzCiMnICMjIExlYXZlcwojKyBsZWFmLWFyZWEtdGF4YSwgd2FybmluZyA9IEZBTFNFCnFwbG90KGxlYWZfYXJlYV9jbTIsCiAgICAgIGRhdGEgPSBzdW1tYXJpc2VfdHJhaXRzX2J5KHRyYWl0c19zb3V0aGVhc3QsIGModHJlZSwgdGF4b24pKSwgYmlucyA9IDIwLAogICAgICB4bGFiID0gIkxlYWYgYXJlYSAoY21cdTAwYjIpIiwgeWxhYiA9ICJOdW1iZXIgb2YgdGF4YSIsCiAgICAgIG1haW4gPSAiRGlzdHJpYnV0aW9uIG9mIGV1Y2FseXB0IGxlYWYgYXJlYSIpCgojKyBsZWFmLW1hc3MtdGF4b24sIHdhcm5pbmcgPSBGQUxTRQpxcGxvdChsZWFmX21hc3NfZywKICAgICAgZGF0YSA9IHN1bW1hcmlzZV90cmFpdHNfYnkodHJhaXRzX3NvdXRoZWFzdCwgYyh0cmVlLCB0YXhvbikpLCBiaW5zID0gMjAsCiAgICAgIHhsYWIgPSAiTGVhZiBtYXNzIChnKSIsIHlsYWIgPSAiTnVtYmVyIG9mIHRheGEiLAogICAgICBtYWluID0gIkRpc3RyaWJ1dGlvbiBvZiBldWNhbHlwdCBsZWFmIG1hc3MiKQoKIysgbGVhZi1hcmVhLXgtbGVhZi1tYXNzLXRheG9uLCB3YXJuaW5nID0gRkFMU0UKcXBsb3QobGVhZl9hcmVhX2NtMiwgbGVhZl9tYXNzX2csCiAgICAgIGRhdGEgPSBzdW1tYXJpc2VfdHJhaXRzX2J5KHRyYWl0c19zb3V0aGVhc3QsIGModHJlZSwgdGF4b24pKSwKICAgICAgeGxhYiA9ICJMZWFmIGFyZWEgKGNtXHUwMGIyKSIsIHlsYWIgPSAiTGVhZiBtYXNzIChnKSIsIGxvZyA9ICJ4eSIsCiAgICAgIG1haW4gPSAiRXVjYWx5cHQgbGVhZiBhcmVhIHZzLiBsZWFmIG1hc3MiKQoKIysgc3BlY2lmaWMtbGVhZi1hcmVhLXRheG9uLCB3YXJuaW5nID0gRkFMU0UKcXBsb3Qoc2xhX21tMl9wZXJfbWcsCiAgICAgIGRhdGEgPSBzdW1tYXJpc2VfdHJhaXRzX2J5KHRyYWl0c19zb3V0aGVhc3QsIGModHJlZSwgdGF4b24pKSwKICAgICAgYmlucyA9IDE1LCB4bGFiID0gIlNMQSAobW1cdTAwYjIgbWdcdTIwN2JcdTAwYjkpIiwKICAgICAgeWxhYiA9ICJOdW1iZXIgb2YgdGF4YSIsIG1haW4gPSAiRGlzdHJpYnV0aW9uIG9mIGV1Y2FseXB0IFNMQSIpCgojJyAjIyBTdGVtcwojKyBzdGVtLWRlbnNpdHktdGF4b24sIHdhcm5pbmcgPSBGQUxTRQpxcGxvdChzdGVtX2RlbnNpdHlfZ19wZXJfbWwsCiAgICAgIGRhdGEgPSBzdW1tYXJpc2VfdHJhaXRzX2J5KHRyYWl0c19zb3V0aGVhc3QsIGModHJlZSwgdGF4b24pKSwKICAgICAgYmlucyA9IDE1LCB4bGFiID0gIlN0ZW0gZGVuc2l0eSAoZyBtbFx1MjA3Ylx1MDBiOSkiLAogICAgICB5bGFiID0gIk51bWJlciBvZiB0YXhhIiwgbWFpbiA9ICJEaXN0cmlidXRpb24gb2YgZXVjYWx5cHQgc3RlbSBkZW5zaXR5IikKCiMnICMjIEZydWl0CiMrIGZydWl0LW1hc3MtdGF4b24sIHdhcm5pbmcgPSBGQUxTRQpxcGxvdChmcnVpdF9tYXNzX21nLAogICAgICBkYXRhID0gc3VtbWFyaXNlX3RyYWl0c19ieSh0cmFpdHNfc291dGhlYXN0LCBjKHRyZWUsIHRheG9uKSksIGJpbnMgPSAxNSwKICAgICAgbG9nID0gIngiLCB4bGFiID0gIkZydWl0IGRyeSBtYXNzIChtZykiLCB5bGFiID0gIk51bWJlciBvZiB0YXhhIiwKICAgICAgbWFpbiA9ICJEaXN0cmlidXRpb24gb2YgZXVjYWx5cHQgZnJ1aXQgbWFzcyIpCgojKyBmcnVpdC13YWxsLXRheG9uLCB3YXJuaW5nID0gRkFMU0UKcXBsb3QoZnJ1aXRfd2FsbF93aWR0aF9tbSwKICAgICAgZGF0YSA9IHN1bW1hcmlzZV90cmFpdHNfYnkodHJhaXRzX3NvdXRoZWFzdCwgYyh0cmVlLCB0YXhvbikpLCBiaW5zID0gMTUsCiAgICAgIGxvZyA9ICJ4IiwgeGxhYiA9ICJGcnVpdCB3YWxsIHdpZHRoIChtbSkiLCB5bGFiID0gIk51bWJlciBvZiB0YXhhIiwKICAgICAgbWFpbiA9ICJEaXN0cmlidXRpb24gb2YgZXVjYWx5cHQgZnJ1aXQgd2FsbCB0aGlja25lc3MiKQoKIycgIyMgU2VlZHMKIysgc2VlZC1tYXNzLXRheG9uLCB3YXJuaW5nID0gRkFMU0UKcXBsb3Qoc2VlZF9tYXNzX21nLAogICAgICBkYXRhID0gc3VtbWFyaXNlX3RyYWl0c19ieSh0cmFpdHNfc291dGhlYXN0LCBjKHRyZWUsIHRheG9uKSksCiAgICAgIGJpbnMgPSAxNSwgbG9nID0gIngiLCB4bGFiID0gIlNlZWQgbWFzcyAobWcpIiwgeWxhYiA9ICJOdW1iZXIgb2YgdGF4YSIsCiAgICAgIG1haW4gPSAiRGlzdHJpYnV0aW9uIG9mIGV1Y2FseXB0IHNlZWQgbWFzcyIpCg==