我打算创建一个箱线图并突出显示成对比较的显着性水平。这是在previous post.
中处理的当我对我的数据集执行相同操作时,出现以下错误:
"Incompatible lengths for set aesthetics: x, y"
这是一个用于说明问题的示例数据集 -
data1<-data.frame(island = c("A", "B", "B", "A", "A"), count = c(2, 5, 12, 2, 3))
g1<-ggplot(data1) + geom_boxplot(aes(x = factor(island), y = count))
g1 + geom_path(x = c(1, 1, 2, 2), y = c(25, 26, 26, 25))
我在运行第三行代码时遇到错误,而boxplot结果正常。我怀疑我错过了一些非常微不足道的事情,但我无法抓住它。我非常感谢任何帮助。
答案 0 :(得分:4)
由于您在data
中没有明确的geom_path
参数,因此data
中ggplot
参数的数据会“继承”到geom_path
。当机器发现'data1'中x和y变量的长度与geom_path
调用中x和y向量的长度不同时,机器会窒息。尝试为geom_path
创建单独的数据框并使用data
参数:
data2 <- data.frame(x = c(1, 1, 2, 2), y = c(25, 26, 26, 25))
ggplot(data = data1, aes(x = factor(island), y = count)) +
geom_boxplot() +
geom_path(data = data2, aes(x = x, y = y))
答案 1 :(得分:0)
我将此作为答案添加,因为评论时间过长,但它是对已经接受的答案的补充。
在类似的情况下,我尝试将geom_path
用于彩色条状图,但出现了此错误:
Error in eval(expr, envir, enclos) : object 'Species' not found
然后事实证明,fill
选项应该转为&#34;关闭&#34;否则它会跟随前一个ggplot
调用中的Species
调用,它要求## ## Load the libraries
require(data.table)
require(ggplot2)
## ## Make toy data
data1 <- data.table(iris)[,list(value=Petal.Length,Species)]
## ## Draw the bars
p <- ggplot(data=data1,aes(x=Species,y=value,fill=Species)) +
geom_boxplot() +
scale_x_discrete(breaks=NULL)
## ## Add lines and an annotation
y1 <- data1[Species=="setosa",max(value)]*1.02
y2 <- y3 <- data1[,max(value)]*1.05
y4 <- data1[Species=="virginica",max(value)]*1.005
data2 <- data.frame(x.=c(1,1,3,3),y.=c(y1,y2,y3,y4))
p <- p +
## geom_path(data=data2,aes(x=x.,y=y.)) + # the line that cause the ERROR
geom_path(data=data2,aes(x=x.,y=y.,fill=NULL)) + # the corrected line
annotate("text",x=2,y=y3,label="***")
p
}列并导致此类错误。
Ext.define('MyApp.controller.MyController', {
extend: 'Ext.app.Controller',
config: {
routes: {
'': 'doA',
':id': 'doB'
},
},
}