gpt4 book ai didi

r - 使用对数刻度时如何添加垂直线?

转载 作者:行者123 更新时间:2023-12-01 22:20:10 25 4
gpt4 key购买 nike

如何在纵轴上使用对数刻度的 ggplot 图中添加一条垂直线?

例如,

ggplot(data.frame(x=1:2, y=c(10,20)), aes(x,y)) + 
geom_line() +
geom_vline(xintercept = 1.5)

按预期工作。如果将垂直轴转换为对数刻度:

ggplot(data.frame(x=1:2, y=c(10,20)), aes(x,y)) +
geom_line() +
geom_vline(xintercept = 1.5) +
coord_trans(y = 'log')

然后垂直线消失。也许相关的是,如果稍微改变数据:

ggplot(data.frame(x=1:2, y=c(1,20)), aes(x,y)) + # y[1] is now different
geom_line() +
geom_vline(xintercept = 1.5) +
coord_trans(y = 'log')

那么垂直线仍然缺失,但会发出警告消息:

Warning messages:
1: In self$trans$y$transform(y) : NaNs produced
2: In trans$transform(value) : NaNs produced

因此,丢失的行可能是由于尝试获取 0(-Inf 且无警告)或负数(NaN 和警告)的对数而引起的。

(sessionInfo() 给出 R 版本 3.3.1 (2016-06-21)ggplot2_2.2.0。)

最佳答案

我认为你的预感是正确的,问题是 geom_vline 试图将截距的对数为零。您可以改为使用 geom_line 来绘制不穿过零的线段。

ggplot(data.frame(x=1:2, y=c(10,20)), aes(x,y)) +
geom_line() +
geom_line(aes(x=c(1.5,1.5), y=c(0.1,200))) +
coord_trans(y = 'log', limy = c(10,20))

enter image description here

关于r - 使用对数刻度时如何添加垂直线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41854216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com