当使用审美映射shape内geom_point时,得到以下信息时的本因子的数量超过6:
"形状调色板最多可以处理6个离散值,因为超过6个变得难以区分;你有15个.考虑手动指定形状.如果必须有它们."
我倾向于同意限制不同形状数量的原则,但是当将形状与颜色结合使用时,这应该不是问题.
是否有一种优雅的方法让ggplot循环遍历形状,即设置symbol7 = symbol1等?现在它只是省略因子级别> 6的点.
Gar*_*ini 10

你可以看到你有很多形状的可能性.当您达到> 6时,您必须以这种方式手动设置数字:
ggplot(data=dat1, aes(x=x, y=y,group=method,shape=method,color=method))+
geom_point() +
scale_shape_manual(values=seq(0,15))
Run Code Online (Sandbox Code Playgroud)
这样您就没有警告,您将在图表上获得相应的符号
更新
正如Luchonacho指出的那样,有许多新形状可供选择.请记住,如果你想使用循环设置它们,请不要使用,aes()因为它会暂时保留在内存中的最后一个绘图参考(即只有最后一个循环输入)并仅绘制那个.
正如您需要使用的其他答案所指出的scale_shape_manual。
要重复所需的符号,您只需使用 即可rep(x, times)。例如,如果您想重复填写的符号 14 到 18(有关符号列表,请参阅 luchonacho 答案),您可以使用以下命令:
ggplot(data, aes(x,y, colour = z)) + geom_point()
scale_shape_manual(values = rep(15:18, 5))
Run Code Online (Sandbox Code Playgroud)
这将重复符号 15 到 18 五次,因此足以满足 20 个不同的值z。
如您所见,它们都是由数字调用的。如果您使用符号(如在另一个答案中),则会发生错误。
如果您没有超过 6 个,那么手动选择它们很容易。例如,如果您有 10 行,另一种选择是:
ggplot(mydata, aes(x,y, colour = z)) +
geom_line() + scale_shape_manual(values = c(4,8,15,16,17,18,21,22,3,42))
Run Code Online (Sandbox Code Playgroud)