我们如何在R?
中复制Tufte隐含的水平线
例如,以下是一个很好的起点:
library(ggplot2)
ggplot(msleep, aes(x=order)) + stat_bin() + theme_bw()
删除边框线应该很简单。关键点,水平线与条形重叠,我不清楚。
我想到两种方法:
答案 0 :(得分:18)
原则上,这很简单 - 您需要做的就是在新图层中绘制白色水平线。您可以使用geom_hline
执行此操作:
library(ggplot2)
ggplot(msleep, aes(x=order)) + stat_bin() + theme_bw() +
geom_hline(yintercept=seq(5, 20, 5), col="white")
关于你的第二个问题 - 我想这可能很难融入一个主题,虽然应该可以创建一个自定义geom来读取y-scale中断并相应地绘制线条。
(我很想被证明是错的。)
答案 1 :(得分:12)
@Andrie答案不是一个很大的补充,但你可以利用包ggthemes
来制作带有ggplot2
的Tufte-sque图。下面,我正在使用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)
答案 2 :(得分:3)
还有一个非常简单的基础R解决方案:
tmp <- table(msleep$order)
barplot(tmp, col='black', las=3)
abline(h=seq(5, max(tmp), by=5), col='white', lwd=2)