我正在尝试设置一个图表,如果n == 0,则点的大小小于n>这段代码一直有效,直到我添加一个图例。这是我的代码:
ggplot(len.oo, aes(x = TCL, y = n, colour = worm, shape = worm)) + ylim(0, 20) +
geom_point(size = ifelse(len.oo$n == 0, 2, 4)) +
theme_bw() + xlab(expression(~italic("O. obscurus")~"TCL (mm)")) + ylab("Abundance") +
theme(legend.title=element_blank(), legend.position="none")
给了我:
只要我添加一个图例就会给我一个错误。带图例的代码:
ggplot(len.oo, aes(x = TCL, y = n, colour = worm, shape = worm)) + ylim(0, 20) +
geom_point(size = ifelse(len.oo$n == 0, 2, 4)) +
theme_bw() + xlab(expression(~italic("O. obscurus")~"TCL (mm)")) + ylab("Abundance") +
theme(legend.title=element_blank(), legend.position=c(0.2, 0.8)) + guides(size=FALSE)
给我错误:
错误:美学必须是长度1或与数据(3)相同: 大小
我还尝试了position = "top"
之类的内容,将图例放在情节之外,没有指南(size=FALSE
)
我可以轻松制作没有图例的图形,然后制作没有大小差异的图例,并使用其他软件将图例复制并粘贴到图像上,但我想在R中完成所有这些。
答案 0 :(得分:2)
问题在于:geom_point(size = ifelse(len.oo$n == 0, 2, 4))
我无法为您提供直接的解决方案,因为没有提供数据,但我建议您在len.oo
数据框中添加一个变量,以便这个变量(假设您称之为size_n
)如果n
等于0,则为2或4,然后将ggplot
图层更改为geom_point(aes(size = size_n))
。
您可以使用以下代码创建此新变量:
library(dplyr)
len.oo <- mutate(len.oo, size_n = ifelse(n == 0, 2, 4))