Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot2错误_R_Ggplot2 - Fatal编程技术网

R ggplot2错误

R ggplot2错误,r,ggplot2,R,Ggplot2,我不知道我在代码中遗漏了什么 set.seed(12345) require(ggplot2) AData <- data.frame(Glabel=LETTERS[1:7], A=rnorm(7, mean = 0, sd = 1), B=rnorm(7, mean = 0, sd = 1)) TData <- data.frame(Tlabel=LETTERS[11:20], A=rnorm(10, mean = 0, sd = 1), B=rnorm(10, mean = 0,

我不知道我在代码中遗漏了什么

set.seed(12345)
require(ggplot2)
AData <- data.frame(Glabel=LETTERS[1:7], A=rnorm(7, mean = 0, sd = 1), B=rnorm(7, mean = 0, sd = 1))
TData <- data.frame(Tlabel=LETTERS[11:20], A=rnorm(10, mean = 0, sd = 1), B=rnorm(10, mean = 0, sd = 1))
i <- 2
j <- 3
p <- ggplot(data=AData, aes(AData[, i], AData[, j])) + geom_point() + theme_bw()
p <- p + geom_text(aes(data=AData, label=Glabel), size=3, vjust=1.25, colour="black")
p <- p + geom_segment(data = TData, aes(xend = TData[ ,i], yend=TData[ ,j]),
                  x=0, y=0, colour="black",
                  arrow=arrow(angle=25, length=unit(0.25, "cm")))
p <- p + geom_text(data=TData, aes(label=Tlabel), size=3, vjust=1.35, colour="black")
set.seed(12345)
需要(ggplot2)

AData我不知道你想做什么,但是失败的那一行是最后一行,因为你没有在映射中映射新的x和y变量
geom_text()
需要x和y坐标,但您只提供了
label
参数,因此ggplot
p
获取x和y,后者只有7行数据,而
Tlabel
的长度为10。这就是错误的原因。我想你的意思是在
TData
的x=A和y=B处绘图?如果是的话,这是可行的:

p + geom_text(data=TData, mapping = aes(A, B, label=Tlabel), 
              size=3, vjust=1.35, colour="black")

我不知道你想做什么,但是失败的那一行是最后一行,因为你没有在映射中映射新的x和y变量
geom_text()
需要x和y坐标,但您只提供了
label
参数,因此ggplot
p
获取x和y,后者只有7行数据,而
Tlabel
的长度为10。这就是错误的原因。我想你的意思是在
TData
的x=A和y=B处绘图?如果是的话,这是可行的:

p + geom_text(data=TData, mapping = aes(A, B, label=Tlabel), 
              size=3, vjust=1.35, colour="black")
(这可能会在
ggplot
邮件列表中得到更好的答案。)

看起来你正试图显示某种双图。。。问题的根源在于您违反了ggplot的习惯用法,它希望您以与数据范围一致的方式指定变量

也许这就是你想要的,通过一些
aes\u string
技巧来替换所需列的名称

varnames <- colnames(AData)[-1]
v1 <- varnames[1]
v2 <- varnames[2]
p <- ggplot(data=AData,
            aes_string(x=v1, y=v2)) + geom_point() + theme_bw()
## took out redundant 'data', made size bigger so I could see the labels
p <- p + geom_text(aes(label=Glabel), size=7, vjust=1.25, colour="black")
p <- p + geom_segment(data = TData, aes_string(xend = v1, yend=v2),
                  x=0, y=0, colour="black",
                  arrow=arrow(angle=25, length=unit(0.25, "cm")))
## added colour so I could distinguish this second set of labels
p <- p + geom_text(data=TData,
                   aes(label=Tlabel), size=10, vjust=1.35, colour="blue")
varnames(这可能会在
ggplot
邮件列表中得到更好的答案。)

看起来你正试图显示某种双图。。。问题的根源在于您违反了ggplot的习惯用法,它希望您以与数据范围一致的方式指定变量

也许这就是你想要的,通过一些
aes\u string
技巧来替换所需列的名称

varnames <- colnames(AData)[-1]
v1 <- varnames[1]
v2 <- varnames[2]
p <- ggplot(data=AData,
            aes_string(x=v1, y=v2)) + geom_point() + theme_bw()
## took out redundant 'data', made size bigger so I could see the labels
p <- p + geom_text(aes(label=Glabel), size=7, vjust=1.25, colour="black")
p <- p + geom_segment(data = TData, aes_string(xend = v1, yend=v2),
                  x=0, y=0, colour="black",
                  arrow=arrow(angle=25, length=unit(0.25, "cm")))
## added colour so I could distinguish this second set of labels
p <- p + geom_text(data=TData,
                   aes(label=Tlabel), size=10, vjust=1.35, colour="blue")

varnames
i
j
未在代码块中定义。此外,您通常会引用
aes()
中的列名,而不是数据对象的子集。那么
i
j
是什么?你到底想做什么?就目前情况而言,您要求代码审查,但没有说明它应该做什么。感谢您指出拼写错误。我已经改正了。感谢代码块中未定义
i
j
。此外,您通常会引用
aes()
中的列名,而不是数据对象的子集。那么
i
j
是什么?你到底想做什么?就目前情况而言,您要求代码审查,但没有说明它应该做什么。感谢您指出拼写错误。我已经改正了。谢谢,将第二组标签移到箭头的同一方向会很好,这样它们总是“在”箭头的前面,但我不知道一个真正快速的方法。是的,我正在尝试显示一个双图。谢谢你的回答。再次感谢。@Ben Bolker:关于箭头标签方向的好主意。@Ben Bolker。好了,给孩子们疯狂的想法:看看你造成了什么?PS最好将第二组标签沿箭头的同一方向移动,使它们始终位于箭头的“前面”,但我不知道一种真正快速的方法。是的,我正在尝试显示一个双图。谢谢你的回答。再次感谢。@Ben Bolker:关于箭头标签方向的好主意。@Ben Bolker。好了,给孩子们疯狂的想法:看看你造成了什么?