(Acest articol a fost publicat pentru prima dată pe https://pacha.dev/blogși cu amabilitate a contribuit la R-bloggeri). (Puteți raporta problema legată de conținutul acestei pagini aici)
Doriți să vă distribuiți conținutul pe R-bloggeri? dați clic aici dacă aveți un blog, sau aici dacă nu aveți.
Acest set de date, găsit într-una dintre vechile mele unități externe, corespunde celebrului complot de la Observații radio ale profilurilor pulsului și măsurătorilor de dispersie a doisprezece pulsari (Meșteșug, 1970).
Aceasta este cunoscută în general ca coperta Joy Division de la Plăceri necunoscute. Dacă se întâmplă să știți cine a creat CSV-ul original pe care l-am folosit, vă rugăm să-mi spuneți pentru a putea acorda creditul corespunzător.
Setul de date conține „impulsuri succesive de la primul pulsar descoperit, CP 1919, sunt aici suprapuse pe verticală. Impulsurile apar la fiecare 1,337 secunde. Sunt cauzate de stea neutronică care se rotește rapid.” (The Cambridge Encyclopaedia of Astronomy, 1977)
Datorită Scientific American, există o explicație completă a setului de date și a originii acestuia.
Contributia pe care am facut-o consta in:
- Facilitarea accesului la acest set de date foarte popular.
- Documentarea totul și organizarea coloanelor într-un mod clar (sper).
Acum câteva zile am scris despre elementele interne Tidyverse/Shiny, așa că aici voi arăta cum să trasez acest set de date exact ca tricourile foarte populare Joy Division, atât cu ggplot2 şi tinyplot. Acesta este un mod bun de a gândi mai activ decât să recurg la memoria musculară la vârsta și anii mei folosind R.
Instala
De la CRAN
install.packages("cp1919")
pak::pkg_install("pachadotdev/cp1919")
Citire
library(cp1919) head(pulsar) measurement time radio_intensity 1 1 1 -0.81 2 1 2 -0.91 3 1 3 -1.09 4 1 4 -1.00 5 1 5 -0.59 6 1 6 -0.82
Vizualizați
Un complot simplu
Aceasta nu seamănă cu coperta albumului Joy Division, dar este punctul de plecare.
library(ggplot2)
ggplot(pulsar) +
geom_line(
aes(x = time, y = radio_intensity)
) +
facet_wrap(~measurement)

library(tinyplot)
plt(
radio_intensity ~ time,
data = pulsar,
facet = ~measurement
)


The Cambridge Encyclopaedia of Astronomy (1977)
Acum obținem un complot cu valurile stivuite.
Cu ggplot2 opțiunea ușoară este să te bazezi pe ggridges care face o treabă grozavă în stivuirea seriei.
library(ggridges)
col1 <- "white"
col2 <- "black"
ggplot(pulsar, aes(x = time, y = measurement, height = radio_intensity, group = measurement)) +
geom_ridgeline(
min_height = min(pulsar$radio_intensity),
scale = 0.2,
linewidth = 0.5,
fill = col1,
colour = col2
) +
scale_y_reverse() +
theme_void() +
theme(
panel.background = element_rect(fill = col1),
plot.background = element_rect(fill = col1, color = col1),
)


Cu tinyplot Trebuie să mă întorc cu un deceniu înapoi în trecut și să-mi amintesc baza R de la care să mă adaptez ggridges interne.
pulsar2 <- transform(pulsar, measurement = factor(measurement))
measurements <- sort(unique(pulsar2$measurement))
n <- length(measurements)
# integer baselines: identical to ggridges ymax = y + scale * height
scale_fac <- 0.2 # mirrors geom_ridgeline(scale = 0.2)
pulsar2$y_stacked <- scale_fac * pulsar2$radio_intensity +
(n - match(pulsar2$measurement, measurements))
par(bg = col1, mar = c(0, 0, 0, 0))
plt(
y_stacked ~ time | measurement,
data = pulsar2,
type = type_area(alpha = 1),
ylim = range(pulsar2$y_stacked),
bg = col1,
col = col2,
axes = FALSE,
legend = FALSE,
frame.plot = FALSE
)


Natura pulsarilor (Scientific American, 1970)
Similar cu parcelele anterioare.
col1 <- "#94cee1"
col2 <- "white"
ggplot(pulsar, aes(x = time, y = measurement, height = radio_intensity, group = measurement)) +
geom_ridgeline(
min_height = min(pulsar$radio_intensity),
scale = 0.2,
linewidth = 0.5,
fill = col1,
colour = col2
) +
scale_y_reverse() +
theme_void() +
theme(
panel.background = element_rect(fill = col1),
plot.background = element_rect(fill = col1, color = col1),
)


par(bg = col1, mar = c(0, 0, 0, 0))
plt(
y_stacked ~ time | measurement,
data = pulsar2,
type = type_area(alpha = 1),
ylim = range(pulsar2$y_stacked),
bg = col1,
col = col2,
axes = FALSE,
legend = FALSE,
frame.plot = FALSE
)


Plăceri necunoscute ale Joy Division (1979)
Acum obținem un complot pe care îl puteți imprima pe un tricou.
col1 <- "black"
col2 <- "white"
ggplot(pulsar, aes(x = time, y = measurement, height = radio_intensity, group = measurement)) +
geom_ridgeline(
min_height = min(pulsar$radio_intensity),
scale = 0.2,
linewidth = 0.5,
fill = col1,
colour = col2
) +
scale_y_reverse() +
theme_void() +
theme(
panel.background = element_rect(fill = col1),
plot.background = element_rect(fill = col1, color = col1),
)


par(bg = col1, mar = c(0, 0, 0, 0))
plt(
y_stacked ~ time | measurement,
data = pulsar2,
type = type_area(alpha = 1),
ylim = range(pulsar2$y_stacked),
bg = col1,
col = col2,
axes = FALSE,
legend = FALSE,
frame.plot = FALSE
)


