R图:创建Tufte的水平条线

Ric*_*ico 20 r graph ggplot2

我们怎样才能在R中复制Tufte隐含的水平线?

Tufte酒吧

例如,以下是一个很好的起点:

library(ggplot2)    
ggplot(msleep, aes(x=order)) + stat_bin() + theme_bw()
Run Code Online (Sandbox Code Playgroud)

删除边框线应该很简单.关键点,水平线与条形重叠,我不清楚.

我想象两种方法:

  1. 针对此特定示例的临时解决方案
  2. 建议如何将其纳入主题

And*_*rie 18

原则上,这很简单 - 您需要做的就是在新图层中绘制白色水平线.你可以geom_hline这样做:

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

在此输入图像描述

关于你的第二个问题 - 我想这可能很难融入一个主题,虽然应该可以创建一个自定义geom来读取y-scale中断并相应地绘制线条.

(我很想被证明是错的.)


Gee*_*cid 12

@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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述