当我使用ggplot2
绘制x坐标从零开始的数据并使用scale_x_sqrt
选项时,绘图从x轴上的1开始而不是零。如果我添加limits=c(-0.1, 100)
,我会收到错误消息" NaNs生成"。如何让ggplot2包含零?
答案 0 :(得分:2)
您可以通过平方根变换使轴下降到零,但不能低于零。转换产生x值低于零的虚数值。
library(tidyverse)
ggplot(mtcars, aes(wt, mpg)) +
geom_point() +
scale_x_sqrt(limits=c(0,6), breaks=0:6, expand=c(0,0))
答案 1 :(得分:1)
我相信您正在寻找ggplot2中的expand_limits
,如下所示:
library(ggplot2)
df <- data.frame(x = 1:10, y = 1:10)
g <- ggplot(df, aes(x, y)) + geom_point()
g <- g + expand_limits(x = 0, y = 0 )
g
?geom_expand
<强>描述强>
有时您可能希望确保限制包含单个值 所有面板或所有图块。这个功能是一个薄的包装 geom_blank可以轻松添加这些值。
答案 2 :(得分:0)
您可以在sqrt
内使用aes
:
# Generate data
foo <- data.frame(a = 0:10, b = 1:11)
# Plot data
library(ggplot2)
ggplot(foo, aes(sqrt(a), b)) +
geom_point()
答案 3 :(得分:0)
请参阅:https://github.com/tidyverse/ggplot2/issues/980
他们描述的解决方法是:
library(ggplot2)
library(scales)
mysqrt_trans <- function() {
trans_new("mysqrt",
transform = base::sqrt,
inverse = function(x) ifelse(x<0, 0, x^2),
domain = c(0, Inf))
}
ggplot(mtcars, aes(wt, mpg)) + geom_point() +
scale_x_continuous(trans="mysqrt", limits=c(0, NA))
与此处的其他答案海报相反,这允许在零的左侧留一些空间。