R ggplot2 - 简单绘图 - 不能指定对数轴限制

时间:2012-09-17 15:28:24

标签: r ggplot2 kernel-density

我正在尝试在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

时出错

请帮忙!

3 个答案:

答案 0 :(得分:4)

如果限制的范围应该部分地低于零,那么您可以对变量进行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)) +

答案 1 :(得分:2)

你想要做的事情没有多大意义吗?负数的对数不是我们可以在R

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

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

答案 2 :(得分:1)

e ^ y不能是否定的。指数常数e是正的,y只是指数。并通过数学定义:

log(x)= y&lt; ==&gt; x = e ^ y

这正是为什么如果x为负,R不能计算log(x)的原因。这与数学定义背道而驰。

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