5

我正在尝试在 ggplot2 中的 R 中创建一个简单的密度图。这是我的代码,效果很好。

d <-  ggplot(result, aes(x=result$baseMeanA)) 
d + geom_density(colour="darkgreen", size=2, fill="darkgreen") + 
scale_x_log10() + scale_y_continuous(limits = c(0, 0.45))

问题是我无法将 x 轴调整为负数。

scale_x_log10(limits= c(1, 10000))

效果很好,但是

scale_x_log10(limits= c(-1, 10000))

根本不起作用!它给了我这个错误:

if (zero_range(range)) { 中的错误:需要 TRUE/FALSE 的缺失值

请帮忙!

4

3 回答 3

5

如果限制的范围应部分低于零,您可以对变量进行 log10 转换并指定连续比例的限制:

ggplot(result, aes(x=log10(baseMeanA))) +
   geom_density(colour="darkgreen", size=2, fill="darkgreen") + 
   scale_x_continuous(limits = c(-1, 10000) + 
   scale_y_continuous(limits = c(0, 0.45)) +
于 2012-09-17T18:33:00.880 回答
2

您尝试做的事情没有多大意义,不是吗?负数的对数不是我们可以在 R 中表示的

R> log(-1)
[1] NaN
Warning message:
In log(-1) : NaNs produced

那么R应该将轴绘制到哪里?

于 2012-09-17T15:34:09.660 回答
1

e^y 不能为负数。指数常数 e 是正数,而 y 只是一个指数。根据数学定义:

log(x) = y <==> x = e^y

这正是为什么如果 x 为负,R 无法计算 log(x) 的原因。它只是违背了数学定义。

我希望这有助于理解为什么这个情节给你带来了麻烦。

于 2012-10-12T12:35:23.150 回答