R 带有stat_binhex的对数刻度

R 带有stat_binhex的对数刻度,r,ggplot2,logarithm,R,Ggplot2,Logarithm,我有两个分布,我想用对数刻度绘制两个轴: library(ggplot2) set.seed(99) data <- data.frame(vec1 = as.integer(rlnorm(10000, sdlog = 2)), vec2 = as.integer(rlnorm(10000, sdlog = 2))) 但不能使用stat\u binhex() 这将产生一个错误 Error in if (!missing(xbnds) &&am

我有两个分布,我想用对数刻度绘制两个轴:

library(ggplot2)
set.seed(99)
data <- data.frame(vec1 = as.integer(rlnorm(10000, sdlog = 2)),
                   vec2 = as.integer(rlnorm(10000, sdlog = 2)))
但不能使用
stat\u binhex()

这将产生一个错误

Error in if (!missing(xbnds) && any(sign(xbnds - range(x)) == c(1, -1))) stop("'xbnds' must encompass range(x)") : 
  missing value where TRUE/FALSE needed
有可能吗?

按照以下说明结束问题(@,如果您愿意,请随时循环使用我的答案)。代码如下

或者,您可以删除
0

bar <- subset(data, vec1 != 0 & vec2 != 0)
ggplot(bar, aes(vec1, vec2)) + stat_binhex() + scale_x_log10() + scale_y_log10()

bar您的数据中有0个值,这会造成问题。如果您向
vec1
vec2
添加一些常量,您将看到缩放工作正常
Error in if (!missing(xbnds) && any(sign(xbnds - range(x)) == c(1, -1))) stop("'xbnds' must encompass range(x)") : 
  missing value where TRUE/FALSE needed
 … 
    ggplot(data, aes(vec1+1, vec2+1)) + stat_binhex() + scale_x_log10() + scale_y_log10()
bar <- subset(data, vec1 != 0 & vec2 != 0)
ggplot(bar, aes(vec1, vec2)) + stat_binhex() + scale_x_log10() + scale_y_log10()