Nothing
## ----hcl-colors-hack, echo=FALSE----------------------------------------------
if (getRversion() < "3.6") {
hcl.colors <- function(n, ...) {
if (n == 4) {
return(c("#A71B4B", "#F9C25C", "#81DEAD", "#584B9F"))
} else {
colorRampPalette(c("#4B0055", "#274983", "#008298", "#00B28A",
"#7ED357", "#FDE333"))(n)
}
}
}
## ----load-data----------------------------------------------------------------
data("Seatbelts")
# View the first few entries:
head(Seatbelts)
## ----first-plot, fig.asp = 1--------------------------------------------------
# Load the Ternary library
library("Ternary")
# Define our columns of interest:
seat <- c("drivers", "front", "rear")
# Extract and plot the data
TernaryPlot(alab = seat[1], blab = seat[2], clab = seat[3])
TernaryPoints(Seatbelts[, seat])
## ----pch, fig.asp = 1/16------------------------------------------------------
par(mar = c(0, 0, 0, 0))
plot(0:20, rep(2, 21), pch = 0:20,
cex = 2, ylim = c(-1, 3), ann = FALSE)
text(0:20, rep(0, 21), 0:20)
## ----seat-pch-----------------------------------------------------------------
beltLawPch <- ifelse(Seatbelts[, "law"], 3, 1)
## ----by-law, fig.asp = 1------------------------------------------------------
# Shrink the margin so the plot's easier to read
par(mar = c(0, 0, 0, 0))
# Set up a blank plot
TernaryPlot(alab = seat[1], blab = seat[2], clab = seat[3])
# Add a legend
legend("topleft", c("Belt law", "No law"), pch = c(3, 1))
# Use our beltLawPch variable to style points
TernaryPoints(Seatbelts[, seat], pch = beltLawPch)
## ----viridis-spec-------------------------------------------------------------
nPoints <- nrow(Seatbelts)
rowCol <- hcl.colors(nPoints, palette = "viridis", alpha = 0.8)
## ----spectrum, fig.asp = 1----------------------------------------------------
par(mar = c(0, 0, 0, 0))
TernaryPlot(alab = seat[1], blab = seat[2], clab = seat[3])
legend("topleft", c("Belt law", "No law"), pch = c(3, 1))
# Add a legend for our colour scale
PlotTools::SpectrumLegend(palette = rowCol, legend = c("Dec 1984", "Jan 1969"))
# Use our rowCol variable to style points
TernaryPoints(Seatbelts[, seat], pch = beltLawPch,
lwd = 2, # Use wider lines so points are clearer
col = rowCol)
## ----month-spectrum, fig.asp = 1----------------------------------------------
# Define a suitable cyclical spectrum
fourSeasons <- hcl.colors(4, "Spectral")
monthCol <- colorRampPalette(fourSeasons[c(1:4, 1)])(13)[c(7:12, 1:6)]
par(mar = c(0, 0, 0, 0))
TernaryPlot(alab = seat[1], blab = seat[2], clab = seat[3])
legend("topleft", c("Belt law", "No law"), pch = c(3, 1))
legendMonths <- seq(1, 12, by = 2)
# Add a legend for our colour index
legend(
"topright",
bty = "n", # No frame
pch = 15, # Filled square
col = monthCol,
legend = month.abb,
title = "Month"
)
# Style points by law and month
TernaryPoints(Seatbelts[, seat], pch = beltLawPch,
lwd = 2, # Use wider lines so points are clearer
col = monthCol)
## ----scale-by-deaths----------------------------------------------------------
par(mar = c(0, 0, 0, 0))
TernaryPlot(alab = seat[1], blab = seat[2], clab = seat[3],
# Magnify the "action":
xlim = c(0.055, 0.095), ylim = c(0.48, 0.52))
legend("topleft", c("No law", "Belt law"),
col = 2:3, pch = 1, lwd = 2, lty = NA)
sizes <- c(3, 7, 12)
scale <- 200
legend("topright", title = "Casualties / Mm", legend = sizes,
pt.cex = sizes / 1000 * scale,
pch = 1, lwd = 2, lty = NA)
# Style points according to casualties and the law
TernaryPoints(Seatbelts[, seat], pch = 1, lwd = 2,
cex = Seatbelts[, "DriversKilled"] / Seatbelts[, "kms"] * scale,
col = 2 + Seatbelts[, "law"])
## ----all-deaths---------------------------------------------------------------
# Subset our data to extract only Octobers:
oct <- month.name == "October"
octBelts <- Seatbelts[oct, ]
par(mar = c(0, 0, 0, 0))
TernaryPlot(alab = seat[1], blab = seat[2], clab = seat[3],
xlim = c(0.055, 0.095), ylim = c(0.48, 0.52),
padding = 0.04)
TernarySegments(octBelts[-nrow(octBelts), seat], octBelts[-1, seat],
col = rowCol, lwd = 2)
# Label each point by its year
TernaryText(octBelts[, seat], paste0("'", 69:84),
font = 2, cex = 1.5,
# Semi-transparent colours
col = adjustcolor(rowCol[oct], alpha.f = 0.8))
# Provide a legend for our colour scheme
PlotTools::SpectrumLegend(
"topright",
bty = "n",
palette = rowCol,
legend = seq(1984, 1969, length.out = 4),
title = "Year"
)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.