想画一张坐标轴过0的图,用了一种笨方法,就是添加geom_segment(),但用geom_text()时却没法调整小数位数,用了round()和signif(),但在绘图中无用。
library(tidyverse)
dt <- data.frame(x = -4:4,
y = -4:4 )
ggplot(dt, aes(x = x, y = y)) + geom_point( ) +
theme_classic() -> p1
p1 + theme(axis.text = element_blank(),
axis.ticks = element_blank(),
axis.line = element_blank(),
axis.title = element_blank()) -> p2
p2 + geom_segment(aes(x = -5, xend = 5, y = 0, yend = 0)) +
geom_segment(aes(x = 0, xend = 0, y = -5, yend = 5)) -> p3
dt2 <- data.frame(x = seq(-5, 5, 0.5),
xend = seq(-5, 5, 0.5),
y = 0,
yend = 0.1)
p3 + geom_segment(data = dt2, aes(x = x, xend = xend, y = y, yend = yend)) +
geom_text(data = subset(dt2, x != 0),
aes(x = x, y = -0.3, label = x),
size = 2.3) -> p4
dt3 <- data.frame(x = 0,
xend = 0.1,
y = seq(-5, 5, 0.5),
yend = seq(-5, 5, 0.5))
p4 + geom_segment(data = dt3, aes(x = x, xend = xend, y = y, yend = yend)) +
geom_text(data = subset(dt3, y != 0),
aes(x = -0.2, y = y, label = signif(y, 2)
), size = 2.3
)
图形基本绘成,但就是没办法调整x,y轴的小数位数。