Sup*_*est 5 plot r axes ggplot2
我在Excel中制作了以下图表:
但后来我想我会用ggplot让它变得更漂亮.我到目前为止:
如果你很好奇,数据基于我的回答,虽然这并不重要.该图是标准的ggplot2构造,具有一些预处理,并且通过中间的x轴的粗线是用p + geom_hline(aes(yintercept=0))(p是ggplot对象)实现的.
我觉得Excel图中的轴配置更好.它强调0线(当数据是金钱时很重要)并且因为你不必从底部一直跟随线条,因此更容易找到截距.这也是人们在纸上或纸板上绘图时绘制轴的方式.
也可以在ggplot中像这样移动轴吗?我不仅想要这条线,而且还要移动刻度线标签.如果有,怎么样?如果不是,是技术还是设计的原因?如果按设计,为什么做出决定?
bap*_*ste 10
试试这个,
shift_axis <- function(p, y=0){
g <- ggplotGrob(p)
dummy <- data.frame(y=y)
ax <- g[["grobs"]][g$layout$name == "axis-b"][[1]]
p + annotation_custom(grid::grobTree(ax, vp = grid::viewport(y=1, height=sum(ax$height))),
ymax=y, ymin=y) +
geom_hline(aes(yintercept=y), data = dummy) +
theme(axis.text.x = element_blank(),
axis.ticks.x=element_blank())
}
p <- qplot(1:10, 1:10) + theme_bw()
shift_axis(p, 5)
Run Code Online (Sandbox Code Playgroud)
小智 4
我尝试更改主题的axis.text.x,但只能更改hjust。
所以我认为你可以删除axis.text.x,然后使用geom_text()添加。
例如:
test <- data.frame(x=seq(1,5), y=seq(-1,3))
ggplot(data=test, aes(x,y)) +
geom_line() +
theme(axis.text.x=element_blank(), axis.ticks.x=element_blank()) +
geom_text(data=data.frame(x=seq(1,5), y=rep(0,5)), label=seq(1,5), vjust=1.5)
Run Code Online (Sandbox Code Playgroud)
也许这些代码很有用。