【发布时间】:2013-12-23 15:06:12
【问题描述】:
我正在尝试使用 ggplot2 绘制一个直方图,该直方图对于不同的 x 间隔具有不同的颜色条。
在参考了Hadley在how to define fill colours in ggplot histogram?中的解决方案后,我得出了以下结论:
library(ggplot2)
set.seed(1)
a <- seq(from=1, to=10000)
b <- rnorm(10000)
c <- data.frame(a,b) # Convert to DF
ggplot(c, aes(x=b, fill=cut(..x.., breaks=c(-2, -1, -0.5, 0, 0.5, 1, 2)))) +
geom_histogram(binwidth=0.1, color="steelblue")
但是,当我尝试将断点定义为变量 MyBreaks 以传递给 aes() 时,出现错误:“cut.default(x,breaks = MyBreaks) 中的错误:对象‘MyBreaks’没找到。”
产生错误的代码:
MyBreaks <- c(-2, -1, -0.5, 0, 0.5, 1, 2)
ggplot(c, aes(x=b, fill=cut(..x.., breaks=MyBreaks))) +
geom_histogram(binwidth=0.1, color="steelblue")
我对其他用户遇到的类似错误进行了一些研究,但解决方案似乎对我不起作用。
例如,How to use earlier declared variables within aes in ggplot with special operators (..count.., etc.) 中的解决方案给出了:“错误:美学的长度必须为 1,或者与 dataProblems:MyBreaks 的长度相同”。我的代码是:
ggplot(c, aes(x=b, MyBreaks1=MyBreaks, fill=cut(..x.., breaks=MyBreaks1))) +
geom_histogram(binwidth=0.1, color="steelblue")
然后我尝试了Local Variables Within aes 中的解决方案,但这给出了相同的结果:“cut.default(x,breaks = MyBreaks) 中的错误:找不到对象'MyBreaks'”。我的代码是:
.e <- environment()
ggplot(c, aes(x=b, fill=cut(..x.., breaks=MyBreaks)), environment = .e) +
geom_histogram(binwidth=0.1, color="steelblue")
我以前做过基本的编程,但是 R 的学习曲线真的很陡!如果有人可以提供帮助将不胜感激!
提前致谢!
【问题讨论】: