ggplot2如何在最后一个刻度处使轴线结束

时间:2015-02-10 02:57:09

标签: r ggplot2

我不希望轴线在原点相交,我也希望轴线在第一个刻度处开始并在最后一个刻度处结束。怎么做?

1 个答案:

答案 0 :(得分:4)

ggthemes软件包已实现了tufte的范围框架。您可以geom_rangeframetheme_tufte一起使用以获取范围框架。然后,您可以另外添加scalelimits以使轴在第一个刻度处开始并在最后一个刻度处结束。

require(ggthemes) 
qplot(mpg, wt, data=mtcars) + geom_rangeframe() + theme_tufte()

qplot(mpg, wt, data=mtcars) + 
  geom_rangeframe(data=data.frame(x=c(10, 35), y=c(0, 6)), aes(x, y)) + 
  theme_tufte() +
  scale_x_continuous(limits = c(10, 35)) +
  scale_y_continuous(limits = c(0, 6)) 

如果您不喜欢该主题,可以查看theme_tufte以获取来源并相应地更改您自己的主题。

qplot(mpg, wt, data=mtcars) + 
  geom_rangeframe(data=data.frame(x=c(10, 35), y=c(0, 6)), aes(x, y)) + 
  theme_bw(base_size = 16) + 
  theme(legend.background = element_blank(), legend.key = element_blank(), 
        panel.background = element_blank(), panel.border = element_blank(), 
        strip.background = element_blank(), plot.background = element_blank(), 
        axis.line = element_blank(), panel.grid = element_blank()) +
  scale_x_continuous(limits = c(10, 35)) +
  scale_y_continuous(limits = c(0, 6)) 

或者,您也可以完全放弃轴并依赖网格线。

qplot(mpg, wt, data=mtcars) +
  scale_x_continuous(limits = c(10, 35)) +
  scale_y_continuous(limits = c(0, 6)) +
  theme_bw() + 
  theme(panel.border=element_rect(color='white'), 
        axis.ticks = element_line(color='gray90'))