如何修复ggplot图例中因geom_line原始数据导致的额外实线干扰问题
ggplot图例异常:额外实线干扰线型显示
我一直尝试解决这个问题但未成功,因为我无法100%确定问题根源。这是阻碍我完成项目的最后一个小问题,任何建议都将万分感谢!
图例中linetype和colour已合并显示,但有一条额外的实线穿过线型,导致其难以辨认。我推测这是用于显示原始数据灰色线条的geom_line调用导致的。
以下是去除主题和标签后的代码:
ggplot(table_mean_a, mapping= aes(x = phase_bins, y = Mean)) + geom_point(aes(x = phase_bins, y = Mean, colour = cond_f))+ geom_line(df_plotting_a, mapping = aes(x=phase_bins, y = mean_change_to_base, group=interaction(ID, cond_f)), alpha = 0.3, size =0.5, colour = "grey", inherit.aes = FALSE)+ geom_hline(yintercept=0, colour="#666766", linetype = "dashed")+ geom_errorbar(subset(table_mean_a, phase_bins!= "baseline"), mapping=aes(ymin=Mean-SD, ymax=Mean+SD, colour = cond_f), width=.4, size = 0.7)+ geom_line(aes(group=as.numeric(cond_f), colour = cond_f, linetype=cond_f), size = 1.2)+ facet_wrap(sample~., labeller=labeller(sample = labels), ncol=2, scales = "free_x") + scale_colour_manual(values=apa)+ labs(colour = "Condition:", linetype = "Condition:")+ guides(colour = guide_legend(override.aes = list(shape = NA, alpha = 1), byrow = TRUE))+ scale_x_discrete(labels= c("base", "stim1", "stim2", "recovery", "break"), drop = T, expand = c(0,0.25))+ scale_y_continuous(limits = c(-1,1), breaks = c(-1,-0.5,0,0.5,1), labels = scales::number_format(accuracy = 1))+ scale_linetype_manual(values=c("solid", "81", "11", "5111"))
以下是数据:
table_mean_a <- structure(list(cond_f = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L), .Label = c("artificial", "cry", "laugh", "babble" ), class = "factor"), phase_bins = structure(c(2L, 3L, 4L, 5L, 6L, 2L, 3L, 4L, 5L, 6L), .Label = c("pre", "baseline", "stim_bin1", "stim_bin2", "recovery", "break"), class = "factor"), age_group = c("adult", "adult", "adult", "adult", "adult", "adult", "adult", "adult", "adult", "adult"), sample = structure(c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("UKi", "UGi", "UKa"), class = "factor"), Mean = c(0, -0.0616666666666667, -0.143333333333333, -0.0983333333333328, -0.0231666666666662, 0, -0.0949999999999997, -0.1625, -0.113333333333333, -0.155833333333333), SD = c(0, 0.154096119467973, 0.24172866718288, 0.423777912706934, 0.633257128379362, 0, 0.13934894565432, 0.248908435688157, 0.350921926972951, 0.677239732274149), Min. = c(0, -0.366666666666667, -0.583333333333337, -0.716666666666667, -0.98, 0, -0.466666666666665, -0.650000000000003, -0.783333333333337, -1.96), Max. = c(0, 0.283333333333334, 0.383333333333336, 1.08333333333334, 1.72666666666667, 0, 0.199999999999996, 0.233333333333333, 0.5, 0.846666666666667), count = c(20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L)), row.names = c(NA, -10L), groups = structure(list(cond_f = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L), .Label = c("artificial", "cry", "laugh", "babble"), class = "factor"), phase_bins = structure(c(2L, 3L, 4L, 5L, 6L, 2L, 3L, 4L, 5L, 6L), .Label = c("pre", "baseline", "stim_bin1", "stim_bin2", "recovery", "break"), class = "factor"), age_group = c("adult", "adult", "adult", "adult", "adult", "adult", "adult", "adult", "adult", "adult"), .rows = structure(list( 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L), ptype = integer(0), class = c("vctrs_list_of", "vctrs_vctr", "list"))), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"), .drop = TRUE), class = c("grouped_df", "tbl_df", "tbl", "data.frame")) df_plotting_a <- structure(list(ID = structure(c(69L, 69L, 69L, 69L, 69L), .Label = c("UG201", "UG208", "UG209", "UG211", "UG215", "UG217", "UG219", "UG220", "UG221", "UG222", "UG228", "UG243", "UG247", "UG254", "UG268", "UG271", "UG272", "UG273", "UG274", "UG275", "UG280", "UG283", "UG284", "UG286", "UG297", "UG299", "UG308", "UG310", "UG315", "UG316", "UG330", "UG331", "UG334", "UG335", "UK103", "UK104", "UK105", "UK106", "UK107", "UK108", "UK110", "UK111", "UK112", "UK113", "UK115", "UK116", "UK117", "UK119", "UK122", "UK123", "UK130", "UK132", "UK135", "UK136", "UK138", "UK139", "UK140", "UK142", "UK145", "UK147", "UK150", "UK153", "UK155", "UK156", "UK159", "UK160", "UK162", "UK164", "UKA102", "UKA103", "UKA104", "UKA105", "UKA106", "UKA107", "UKA108", "UKA109", "UKA110", "UKA111", "UKA112", "UKA113", "UKA114", "UKA115", "UKA116", "UKA117", "UKA119", "UKA120", "UKA121", "UKA122"), class = "factor"), sex = structure(c(2L, 2L, 2L, 2L, 2L), .Label = c("f", "m"), class = "factor"), trial = structure(c(1L, 1L, 1L, 1L, 1L), .Label = c("1", "2", "3", "4"), class = "factor"), cond_f = structure(c(4L, 4L, 4L, 4L, 4L), .Label = c("artificial", "cry", "laugh", "babble"), class = "factor"), age_group = c("adult", "adult", "adult", "adult", "adult"), stimulus = structure(c(7L, 7L, 7L, 7L, 7L), .Label = c("a1", "a2", "a3", "a4", "b1", "b2", "b3", "b4", "c1", "c2", "c3", "c4", "l1", "l2", "l3", "l4"), class = "factor"), phase_bins = structure(2:6, .Label = c("pre", "baseline", "stim_bin1", "stim_bin2", "recovery", "break" ), class = "factor"), mean_change_to_base = c(0, -0.149999999999997, -0.399999999999996, -0.299999999999996, -0.0733333333333306 ), max_change_to_base = c(0, -0.333333333333329, -0.533333333333331, -0.43333333333333, -0.333333333333329), sample = structure(c(3L, 3L, 3L, 3L, 3L), .Label = c("UKi", "UGi", "UKa"), class = "factor")), row.names = c(NA, -5L), groups = structure(list(ID = structure(69L, .Label = c("UG201", "UG208", "UG209", "UG211", "UG215", "UG217", "UG219", "UG220", "UG221", "UG222", "UG228", "UG243", "UG247", "UG254", "UG268", "UG271", "UG272", "UG273", "UG274", "UG275", "UG280", "UG283", "UG284", "UG286", "UG297", "UG299", "UG308", "UG310", "UG315", "UG316", "UG330", "UG331", "UG334", "UG335", "UK103", "UK104", "UK105", "UK106", "UK107", "UK108", "UK110", "UK111", "UK112", "UK113", "UK115", "UK116", "UK117", "UK119", "UK122", "UK123", "UK130", "UK132", "UK135", "UK136", "UK138", "UK139", "UK140", "UK142", "UK145", "UK147", "UK150", "UK153", "UK155", "UK156", "UK159", "UK160", "UK162", "UK164", "UKA102", "UKA103", "UKA104", "UKA105", "UKA106", "UKA107", "UKA108", "UKA109", "UKA110", "UKA111", "UKA112", "UKA113", "UKA114", "UKA115", "UKA116", "UKA117", "UKA119", "UKA120", "UKA121", "UKA122"), class = "factor"), trial = structure(1L, .Label = c("1", "2", "3", "4"), class = "factor"), cond_f = structure(4L, .Label = c("artificial", "cry", "laugh", "babble"), class = "factor"), .rows = structure(list( 1:5), ptype = integer(0), class = c("vctrs_list_of", "vctrs_vctr", "list"))), row.names = c(NA, -1L), class = c("tbl_df", "tbl", "data.frame"), .drop = TRUE), class = c("grouped_df", "tbl_df", "tbl", "data.frame"))
内容的提问来源于stack exchange,提问作者clarulatta_elphadora
相关产品推荐
相关产品推荐

