Vraag R-grafieken: de horizontale balklijnen van Tufte maken


Hoe kunnen we de impliciete horizontale lijnen van Tufte repliceren in R?

Tufte bars

Het volgende is bijvoorbeeld een goed startpunt:

library(ggplot2)    
ggplot(msleep, aes(x=order)) + stat_bin() + theme_bw()

Het verwijderen van de grenslijn moet eenvoudig zijn. Het cruciale punt, dat de horizontale lijn met de balken overlapt, is mij onduidelijk.

Ik stel me hier twee benaderingen voor:

  1. Ad-hoc oplossing voor dit specifieke voorbeeld
  2. Suggestie om het in een thema op te nemen

19
2017-12-04 11:05


oorsprong


antwoorden:


Geen grote toevoeging aan @Andrie, maar u kunt een voordeel uit het pakket halen ggthemes om Tufte-sque plots te maken met ggplot2. Hieronder gebruik ik theme_tufte, verander het lettertype met extrafont pakket en gebruik opts om alle andere visuele functies te verfijnen:

library(ggthemes)
library(extrafont)
ggplot(msleep, aes(x=order)) + stat_bin(width=0.6, fill="gray") + 
  theme_tufte(base_family="GillSans", base_size=16, ticks=F) +
  theme(axis.line=element_blank(), axis.text.x=element_blank(),
        axis.title=element_blank()) +
  geom_hline(yintercept=seq(5, 20, 5), col="white", lwd=1.2)

enter image description here


11
2018-03-24 13:17



In principe is dit eenvoudig - het enige dat u hoeft te doen, is witte horizontale lijnen in een nieuwe laag tekenen. Je kunt gebruiken geom_hline om dit te doen:

library(ggplot2)    
ggplot(msleep, aes(x=order)) + stat_bin() + theme_bw() +
  geom_hline(yintercept=seq(5, 20, 5), col="white")

enter image description here

Wat betreft je tweede vraag - ik kan me voorstellen dat dit misschien moeilijk is om op te nemen in een thema, hoewel het mogelijk zou moeten zijn om een ​​aangepaste geom te maken die de y-schaal breuken leest en de lijnen overeenkomstig plot.

(Ik zou graag verkeerd blijken te zijn.)


18
2017-12-04 11:10



Er is ook een redelijk eenvoudige basis R-oplossing hiervoor:

tmp <- table(msleep$order)
barplot(tmp, col='black', las=3)
abline(h=seq(5, max(tmp), by=5), col='white', lwd=2)

enter image description here


3
2017-10-26 18:44