R-使用ggplot2中的填充和边框颜色在一个形状中绘制2个变量

R-使用ggplot2中的填充和边框颜色在一个形状中绘制2个变量,r,ggplot2,shapes,R,Ggplot2,Shapes,我刚才问了一个问题: 这个答案对我帮助很大,但根据我的真实数据得出的结果并不理想。我想只留下一个形状和颜色这一个在2种颜色 我发现这个问题: 这正是我想要的,但我无法让它在我的数据上工作 这就是我尝试过的: ggplot(df, aes(Code, Corr)) + geom_point(aes(colour Vari, fill = Con), shape=21, size = 4) + scale_fill_manual(values=c(&q

我刚才问了一个问题:

这个答案对我帮助很大,但根据我的真实数据得出的结果并不理想。我想只留下一个形状和颜色这一个在2种颜色

我发现这个问题: 这正是我想要的,但我无法让它在我的数据上工作

这就是我尝试过的:

ggplot(df, aes(Code, Corr)) + 
  geom_point(aes(colour Vari, 
                 fill = Con), shape=21, size = 4) + 
  scale_fill_manual(values=c("yellow", "black", "grey", "purple", "plum", "cyan", "dimgrey")) + 
  scale_colour_manual(values=c("red", "dodgerblue", "seagreen", "orange", "deeppink", "saddlebrown"))
下面是我的数据帧示例:

df <- structure(list(Vari = c(
  "PM", "TMK", "VPM",
  "TMK", "TXK", "TNK", "TGK", "VPM", "TMK",
  "TXK", "TNK", "TGK", "VPM", "TMK", "VPM",
  "TMK", "TNK", "TGK", "VPM", "TMK", "TXK",
  "TNK", "TGK", "VPM", "TNK", "TGK", "VPM",
  "TMK", "TXK", "TNK", "TGK", "TNK", "TGK",
  "TMK", "TXK", "TNK", "TGK"
), Code = c(
  "R10",
  "J06", "J20-J22", "J20-J22", "J20-J22", "J20-J22", "J20-J22",
  "J20-J22", "J20-J22", "J20-J22", "J20-J22", "J20-J22", "J06",
  "J06", "J20", "J20", "J20", "J20", "J20-J22", "J20-J22", "J20-J22",
  "J20-J22", "J20-J22", "J20", "J20", "J20", "J20-J22", "J20-J22",
  "J20-J22", "J20-J22", "J20-J22", "H00-H06", "H00-H06", "B85-B89",
  "B85-B89", "I20-I25", "I20-I25"
), Corr = c(
  -0.569, -0.5125,
  -0.5739, -0.5843, -0.5603, -0.5744, -0.5547, -0.6168, -0.5897,
  -0.5458, -0.5867, -0.5628, -0.5047, -0.5086, -0.5172, -0.512,
  -0.5229, -0.5257, -0.6172, -0.6003, -0.5599, -0.602, -0.5912,
  -0.5032, -0.5121, -0.5187, -0.5966, -0.59, -0.5661, -0.5879,
  -0.5589, 0.5104, 0.5758, 0.5491, 0.528, -0.5153, -0.5516
), Con = c(
  "Hi",
  "Eg", "Eg", "Eg", "Eg", "Eg", "Eg", "WFX",
  "WFX", "WFX", "WFX", "WFX", "WFM",
  "WFM", "WFM", "WFM", "WFM", "WFM",
  "WFM", "WFM", "WFM", "WFM", "WFM",
  "No2", "No2", "No2", "No2", "No2", "No2",
  "No2", "No2", "PM25", "PM25", "MAM", "MAM",
  "Hi", "Hi"
)), row.names = c(
  23L, 35L, 36L, 37L, 38L,
  39L, 40L, 43L, 44L, 45L, 46L, 47L, 50L, 51L, 52L, 53L, 54L, 55L,
  58L, 59L, 60L, 61L, 62L, 64L, 65L, 66L, 67L, 68L, 69L, 70L, 71L,
  74L, 75L, 86L, 87L, 100L, 101L
), class = "data.frame")

df您的示例中缺少一个
=
,位于
geom_点(aes(color Vari
),它应该是
geom_点(aes(color=Vari,
),这已经是您面临的错误了吗?哦,天哪,谢谢!我现在得到一个绘图,但还有一条警告消息:在doTryCatch中(return(expr),name,parentenv,handler):display list redraw incomplettemh,使用您提供的数据帧,我没有收到此错误消息。对我来说,它非常有用。可能这更像是RStudio错误(?),请参阅。您是否尝试重新启动了Rstudio,因此所有内容都是新的,您只使用您发布的code和data.frame?谢谢!我现在知道了。我的问题是重叠。您知道如何排列这些圆,因此将它们放在组内的相邻位置,而不是放在同一位置。您可以将
几何点
替换为
geom\u jitter
或者您可以使用ggbeeswarm软件包并使用
geom\u beeswarm
(看起来通常更好)