R-графики: создание горизонтальных штриховых линий Tufte
Как мы можем реплицировать неявные горизонтальные линии Tufte в R?
![Tufte bars]()
Например, хорошая стартовая точка:
library(ggplot2)
ggplot(msleep, aes(x=order)) + stat_bin() + theme_bw()
Удаление границы должно быть простым. Критический момент, накладывающий горизонтальную линию на решетки, для меня непонятен.
Я представляю себе два подхода:
- Ad-hoc решение для данного конкретного примера
- Предложение о том, как включить его в тему
Ответы
Ответ 1
Не большое дополнение к ответу @Andrie, но вы можете воспользоваться преимуществом пакета ggthemes
, чтобы сделать графики Tufte-sque с ggplot2
. Ниже я использую theme_tufte
, меняю шрифт с помощью пакета extrafont
и использую opts
для точной настройки всех других визуальных функций:
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]()
Ответ 2
В принципе, это прямолинейно - все, что вам нужно сделать, это рисовать белые горизонтальные линии в новом слое. Вы можете использовать geom_hline
для этого:
library(ggplot2)
ggplot(msleep, aes(x=order)) + stat_bin() + theme_bw() +
geom_hline(yintercept=seq(5, 20, 5), col="white")
![enter image description here]()
Что касается вашего второго вопроса - я бы предположил, что это может быть сложно включить в тему, хотя должно быть возможно создать пользовательскую геометрию, которая считывает разрывы y-шкалы и соответственно строит линии.
(Я хотел бы, чтобы меня оправдали.)
Ответ 3
Там также довольно простое базовое решение R для этого:
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]()