【发布时间】:2021-10-05 07:48:18
【问题描述】:
我正在将标签应用于类似于 example 的情节。标签将是线上点的数值。他们不断地被切断。我试图弄清楚如何可靠地调整 y 轴限制,以便所有标签都适合绘图窗口。我一直无法找到始终如一的工作。感谢您的帮助!
library(ggplot2)
mymin <- -1000000
mymax <- -mymin
myinterval <- 100000
myseq <- seq(mymin,mymax,myinterval)
temp <- data.frame(X=myseq,Y=myseq,Name=rep("labels",length(myseq)))
p <- ggplot(temp,aes(x=X,y=Y)) + geom_line() +
geom_text(data=subset(temp,Y<0),aes(x=X,y=Y,label=Name),angle=90,hjust=1)+
geom_text(data=subset(temp,Y>0),aes(x=X,y=Y,label=Name),angle=90,hjust=0)+
scale_y_continuous(labels = scales::label_number_si())+
scale_x_continuous(labels = scales::label_number_si())
p
我的会话信息:
R version 3.6.0 (2019-04-26)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 17763)
Matrix products: default
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] scales_1.1.1 ggplot2_3.3.2
【问题讨论】:
-
在您的 x 和 y 比例尺中使用
expand来更改两端包含多少空间。顺便说一句,geom_text(aes(label = Name, hjust = ifelse(Y < 0, 1, 0)), angle = 90)将设置您的hjust只需一个geom_text调用而不设置您的数据子集,或者您可以使用相同的ifelse语句向数据添加一个变量并将其映射到内部的hjust你的aes。我很少看到hjust被用作美学,但它是合法的 -
不能解决所有问题,有时可能看起来很糟糕,但
p + coord_cartesian(clip = "off")会解决某些情况。 -
非常感谢! expand 和 coord_cartesian 方法都非常有用,但它们需要我设置任意的限制数量,在某些情况下可能太多或两个太少。有没有办法提取 geom_text 标签的特征 - 特别是它们占用的 y 距离(因为我的角度是 90),这样我就可以计算出在 expand 参数中使用的确切限制?
-
相关问题,这里仍然是悬而未决的问题之一stackoverflow.com/questions/55686910/…