ggplot 图例未显示正确的类型线

ggplot legend not showing correct typelines

我有一个图,其中有 5 条虚线和 5 条实线。这在情节中正确显示。但是,使用以下代码,图例显示所有线条都是实线。我觉得这很奇怪,因为图例显示了线宽的正确变化,其格式相同。我尝试用 "Factorlevel" = 1 替换 "Factorlevel" = "solid",但这也不起作用。

请查看我的代码下方的可重现示例

ggplot(respplot_new, aes(x=expl.val,y=pred.val,color=model))+
geom_line(aes(size=model,linetype=model)) +
scale_linetype_manual(values = c("RF" = "solid", "GBM" = "solid",
 "MAXENT" = "solid", "MARS" = "solid", "GAM" = "solid",
 "GLM"="dashed", "ANN"="dashed", "FDA"="dashed","CTA"="dashed","SRE"="dashed"))+  
scale_size_manual(values = c("RF" = 1.8, "GBM" = 1.8,
 "MAXENT" = 1.8, "MARS" = 1.8, "GAM" = 1.8,
 "GLM"=1.1, "ANN"=1.1, "FDA"=1.1,"CTA"=1.1,"SRE"=1.1))+  
facet_grid(~respplot_new$expl.name,scales="free")+theme_bw() 

对于可重现示例的长度,我们深表歉意,这是我能够使用 dput 函数获得的最小值。感谢您的考虑。

structure(list(expl.name = structure(c(3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("Proportion of agriculture", 
"Human population density", "Distance to agriculture", "Proportion of development"
), class = "factor"), expl.val = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 1098.78377525253, 1098.78377525253, 1098.78377525253, 1098.78377525253, 
1098.78377525253, 1098.78377525253, 1098.78377525253, 1098.78377525253, 
1098.78377525253, 1098.78377525253, 85.8585858585859, 85.8585858585859, 
85.8585858585859, 85.8585858585859, 85.8585858585859, 85.8585858585859, 
85.8585858585859, 85.8585858585859, 85.8585858585859, 85.8585858585859, 
86.8686868686869, 86.8686868686869, 86.8686868686869, 86.8686868686869, 
86.8686868686869, 86.8686868686869, 86.8686868686869, 86.8686868686869, 
86.8686868686869, 86.8686868686869, 75.7575757575758, 75.7575757575758, 
75.7575757575758, 75.7575757575758, 75.7575757575758, 75.7575757575758, 
75.7575757575758, 75.7575757575758, 75.7575757575758, 75.7575757575758, 
76.7676767676768, 76.7676767676768, 76.7676767676768, 76.7676767676768, 
76.7676767676768, 76.7676767676768, 76.7676767676768, 76.7676767676768, 
76.7676767676768, 76.7676767676768, 390.966472326806, 390.966472326806, 
390.966472326806, 390.966472326806, 390.966472326806, 390.966472326806, 
390.966472326806, 390.966472326806, 390.966472326806, 390.966472326806, 
469.159766792168, 469.159766792168, 469.159766792168, 469.159766792168, 
469.159766792168, 469.159766792168, 469.159766792168, 469.159766792168, 
469.159766792168, 469.159766792168), model = structure(c(7L, 
9L, 8L, 5L, 2L, 6L, 4L, 3L, 1L, 10L, 7L, 9L, 8L, 5L, 2L, 6L, 
4L, 3L, 1L, 10L, 7L, 9L, 8L, 5L, 2L, 6L, 4L, 3L, 1L, 10L, 7L, 
9L, 8L, 5L, 2L, 6L, 4L, 3L, 1L, 10L, 7L, 9L, 8L, 5L, 2L, 6L, 
4L, 3L, 1L, 10L, 7L, 9L, 8L, 5L, 2L, 6L, 4L, 3L, 1L, 10L, 7L, 
9L, 8L, 5L, 2L, 6L, 4L, 3L, 1L, 10L, 7L, 9L, 8L, 5L, 2L, 6L, 
4L, 3L, 1L, 10L), .Label = c("RF", "GBM", "MAXENT", "MARS", "GAM", 
"GLM", "ANN", "FDA", "CTA", "SRE"), class = "factor"), pred.val = c(0.377837081657681, 
0.289682245014943, 0.303656725695349, 0.652763823576286, 0.551049518656044, 
0.543664244044848, 0.600094628037518, 0.842622666666667, 0.557333333333333, 
1, 0.497161495216137, 0.289682245014943, 0.411028449541226, 0.661018388330178, 
0.550904016356143, 0.546817382114225, 0.634881521097495, 0.862494333333333, 
0.594, 1, 0.0810608869754512, 0.489491284870227, 0.171208708485626, 
0.0637801802410929, 0.307426323707738, 0.0308128470877357, 0.0743518990932153, 
0.0817215, 0.484, 0, 0.0807936474564006, 0.489491284870227, 0.170148227471718, 
0.0597404545728378, 0.307426323707738, 0.0295449629590053, 0.0716436251791972, 
0.0804373, 0.483333333333333, 0, 0.654393286840172, 0.696277149376623, 
0.73174123479955, 0.0033385823708866, 0.676035380732291, 0.978015696055508, 
0.671377674947882, 0.883775666666667, 0.542, 0, 0.654393271023166, 
0.696277149376623, 0.730485340340835, 0.00321040440788555, 0.676035380732291, 
0.979003084409959, 0.670006581468528, 0.882102666666667, 0.542, 
0, 0.0713256037593483, 0.242886821072384, 0.140090432179967, 
0.042605020907364, 0.145155448037101, 2.42353541255428e-10, 0.0205399878748643, 
0.0508441666666667, 0.204, 0, 0.0713256037593483, 0.242886821072384, 
0.138548917887711, 0.00555445488463794, 0.145155448037101, 3.25156380242609e-12, 
0.0187553675668009, 0.0508441666666667, 0.202666666666667, 0)), row.names = c(NA, 
-80L), class = c("tbl_df", "tbl", "data.frame"))

您可以使用 theme(legend.key.size = unit(0.5, "in")) 来增加图例的大小,有足够的 space 使虚线看起来像虚线。

ggplot(respplot_new, aes(x=expl.val,y=pred.val,color=model))+
  geom_line(aes(size=model,linetype=model)) +
  scale_linetype_manual(values = c("RF" = "solid", "GBM" = "solid",
                                   "MAXENT" = "solid", "MARS" = "solid", "GAM" = "solid",
                                   "GLM"="dashed", "ANN"="dashed", "FDA"="dashed","CTA"="dashed","SRE"="dashed"))+  
  scale_size_manual(values = c("RF" = 1.8, "GBM" = 1.8,
                               "MAXENT" = 1.8, "MARS" = 1.8, "GAM" = 1.8,
                               "GLM"=1.1, "ANN"=1.1, "FDA"=1.1,"CTA"=1.1,"SRE"=1.1))+  
  facet_grid(~respplot_new$expl.name,scales="free")+theme_bw() +theme(legend.key.size = unit(0.5, "in"))