我们如何在 R 中复制 Tufte 的隐式水平线?
例如,以下是一个很好的起点:
library(ggplot2)
ggplot(msleep, aes(x=order)) + stat_bin() + theme_bw()
删除边界线应该很简单。关键点,用条覆盖水平线,我不清楚。
我在这里想象两种方法:
- 此特定示例的临时解决方案
- 建议如何将其合并到主题中
原则上,这很简单——您需要做的就是在新图层中绘制白色水平线。您可以使用它geom_hline
来执行此操作:
library(ggplot2)
ggplot(msleep, aes(x=order)) + stat_bin() + theme_bw() +
geom_hline(yintercept=seq(5, 20, 5), col="white")
至于你的第二个问题 - 我想这可能很难融入主题,尽管应该可以创建一个自定义几何图形来读取 y 比例中断并相应地绘制线条。
(我很想被证明是错误的。)
对@Andrie 答案的补充不是很大,但您可以利用该软件包ggthemes
制作带有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)
还有一个非常简单的基本 R 解决方案:
tmp <- table(msleep$order)
barplot(tmp, col='black', las=3)
abline(h=seq(5, max(tmp), by=5), col='white', lwd=2)