HELP!
我一直在尝试直接为我的线性模型散点图添加标签,但有些困难。我读过这些文章(How to show directlabels after geom_smooth and not after geom_line?)
我认为我需要在ggplot中使用geom_dl
函数。
然而,目前我只能让标签落在最后的点上,而不是线本身。我还设法在图表上绘制了名称,但是我再次无法将它与线条对齐。
任何想法都将不胜感激!
由于
这是我的代码:
p<-ggplot(Tabresults,aes(x=value,y=Mean),shape=variable)+stat_smooth(aes(colour=variable),size=1,method = "lm" ,span =0.3, se=F)+
TD_Scatter+
scale_color_manual(values=c("Cost Efficency"=col2,Simplicity=col1,"Reglatory Ease"=col3, Responsibility=col4,Approval=col5))
p+ geom_dl(aes(label=variable), method = list(box.color = NA, "angled.boxes"))
我的虚拟数据集:
Tabresults<- structure(list(Mean = c(66.6666666666667, 16.6666666666667, 33.3333333333333,
NA, 66.6666666666667, NA, 66.6666666666667, NA, NA, NA, 83.3333333333333,
NA, NA, NA, 50, NA, NA, NA, NA, 33.3333333333333, NA, 50, 33.3333333333333,
NA, NA, NA, 33.3333333333333, NA, NA, NA, 33.3333333333333, NA,
33.3333333333333, NA, NA, NA, NA, NA, 83.3333333333333, NA, NA,
NA, 33.3333333333333, 66.6666666666667, NA, 50, 33.3333333333333,
NA, 50, 83.3333333333333, 66.6666666666667, 16.6666666666667,
33.3333333333333, NA, 66.6666666666667, NA, 66.6666666666667,
NA, NA, NA, 83.3333333333333, NA, NA, NA, 50, NA, NA, NA, NA,
33.3333333333333, NA, 50, 33.3333333333333, NA, NA, NA, 33.3333333333333,
NA, NA, NA, 33.3333333333333, NA, 33.3333333333333, NA, NA, NA,
NA, NA, 83.3333333333333, NA, NA, NA, 33.3333333333333, 66.6666666666667,
NA, 50, 33.3333333333333, NA, 50, 83.3333333333333, 66.6666666666667,
16.6666666666667, 33.3333333333333, NA, 66.6666666666667, NA,
66.6666666666667, NA, NA, NA, 83.3333333333333, NA, NA, NA, 50,
NA, NA, NA, NA, 33.3333333333333, NA, 50, 33.3333333333333, NA,
NA, NA, 33.3333333333333, NA, NA, NA, 33.3333333333333, NA, 33.3333333333333,
NA, NA, NA, NA, NA, 83.3333333333333, NA, NA, NA, 33.3333333333333,
66.6666666666667, NA, 50, 33.3333333333333, NA, 50, 83.3333333333333,
66.6666666666667, 16.6666666666667, 33.3333333333333, NA, 66.6666666666667,
NA, 66.6666666666667, NA, NA, NA, 83.3333333333333, NA, NA, NA,
50, NA, NA, NA, NA, 33.3333333333333, NA, 50, 33.3333333333333,
NA, NA, NA, 33.3333333333333, NA, NA, NA, 33.3333333333333, NA,
33.3333333333333, NA, NA, NA, NA, NA, 83.3333333333333, NA, NA,
NA, 33.3333333333333, 66.6666666666667, NA, 50, 33.3333333333333,
NA, 50, 83.3333333333333, 66.6666666666667, 16.6666666666667,
33.3333333333333, NA, 66.6666666666667, NA, 66.6666666666667,
NA, NA, NA, 83.3333333333333, NA, NA, NA, 50, NA, NA, NA, NA,
33.3333333333333, NA, 50, 33.3333333333333, NA, NA, NA, 33.3333333333333,
NA, NA, NA, 33.3333333333333, NA, 33.3333333333333, NA, NA, NA,
NA, NA, 83.3333333333333, NA, NA, NA, 33.3333333333333, 66.6666666666667,
NA, 50, 33.3333333333333, NA, 50, 83.3333333333333), Brands = c("A",
"A", "D", "A", "C", "B", "A", "C", "B", "D", "C", "A", "D", "A",
"B", "A", "C", "B", "D", "C", "D", "B", "C", "A", "C", "A", "B",
"B", "D", "C", "C", "B", "C", "C", "B", "C", "D", "B", "A", "B",
"B", "B", "B", "A", "C", "A", "C", "A", "A", "A", "A", "A", "D",
"A", "C", "B", "A", "C", "B", "D", "C", "A", "D", "A", "B", "A",
"C", "B", "D", "C", "D", "B", "C", "A", "C", "A", "B", "B", "D",
"C", "C", "B", "C", "C", "B", "C", "D", "B", "A", "B", "B", "B",
"B", "A", "C", "A", "C", "A", "A", "A", "A", "A", "D", "A", "C",
"B", "A", "C", "B", "D", "C", "A", "D", "A", "B", "A", "C", "B",
"D", "C", "D", "B", "C", "A", "C", "A", "B", "B", "D", "C", "C",
"B", "C", "C", "B", "C", "D", "B", "A", "B", "B", "B", "B", "A",
"C", "A", "C", "A", "A", "A", "A", "A", "D", "A", "C", "B", "A",
"C", "B", "D", "C", "A", "D", "A", "B", "A", "C", "B", "D", "C",
"D", "B", "C", "A", "C", "A", "B", "B", "D", "C", "C", "B", "C",
"C", "B", "C", "D", "B", "A", "B", "B", "B", "B", "A", "C", "A",
"C", "A", "A", "A", "A", "A", "D", "A", "C", "B", "A", "C", "B",
"D", "C", "A", "D", "A", "B", "A", "C", "B", "D", "C", "D", "B",
"C", "A", "C", "A", "B", "B", "D", "C", "C", "B", "C", "C", "B",
"C", "D", "B", "A", "B", "B", "B", "B", "A", "C", "A", "C", "A",
"A", "A"), Country = c("UK", "Italy", "Canada", "UK", "France",
"USA", "USA", "Canada", "France", "France", "Germany", "USA",
"USA", "Germany", "UK", "Canada", "USA", "UK", "Italy", "Spain",
"UK", "Canada", "France", "Germany", "UK", "Canada", "Germany",
"France", "Spain", "Canada", "National", "Spain", "USA", "Italy",
"USA", "Spain", "USA", "Canada", "National", "Spain", "Italy",
"Germany", "USA", "Italy", "USA", "Spain", "UK", "France", "USA",
"France", "UK", "Italy", "Canada", "UK", "France", "USA", "USA",
"Canada", "France", "France", "Germany", "USA", "USA", "Germany",
"UK", "Canada", "USA", "UK", "Italy", "Spain", "UK", "Canada",
"France", "Germany", "UK", "Canada", "Germany", "France", "Spain",
"Canada", "National", "Spain", "USA", "Italy", "USA", "Spain",
"USA", "Canada", "National", "Spain", "Italy", "Germany", "USA",
"Italy", "USA", "Spain", "UK", "France", "USA", "France", "UK",
"Italy", "Canada", "UK", "France", "USA", "USA", "Canada", "France",
"France", "Germany", "USA", "USA", "Germany", "UK", "Canada",
"USA", "UK", "Italy", "Spain", "UK", "Canada", "France", "Germany",
"UK", "Canada", "Germany", "France", "Spain", "Canada", "National",
"Spain", "USA", "Italy", "USA", "Spain", "USA", "Canada", "National",
"Spain", "Italy", "Germany", "USA", "Italy", "USA", "Spain",
"UK", "France", "USA", "France", "UK", "Italy", "Canada", "UK",
"France", "USA", "USA", "Canada", "France", "France", "Germany",
"USA", "USA", "Germany", "UK", "Canada", "USA", "UK", "Italy",
"Spain", "UK", "Canada", "France", "Germany", "UK", "Canada",
"Germany", "France", "Spain", "Canada", "National", "Spain",
"USA", "Italy", "USA", "Spain", "USA", "Canada", "National",
"Spain", "Italy", "Germany", "USA", "Italy", "USA", "Spain",
"UK", "France", "USA", "France", "UK", "Italy", "Canada", "UK",
"France", "USA", "USA", "Canada", "France", "France", "Germany",
"USA", "USA", "Germany", "UK", "Canada", "USA", "UK", "Italy",
"Spain", "UK", "Canada", "France", "Germany", "UK", "Canada",
"Germany", "France", "Spain", "Canada", "National", "Spain",
"USA", "Italy", "USA", "Spain", "USA", "Canada", "National",
"Spain", "Italy", "Germany", "USA", "Italy", "USA", "Spain",
"UK", "France", "USA", "France"), ResponseID = c("R_00WRlb700n1GjXv",
"R_07gbXR4Ha6OJB09", "R_0Au3bpA2SIJkoJv", "R_0DMu9qBNcmH06RT",
"R_0H9Ij1iJbxxauhv", "R_0HtzJMAlUmFd7eJ", "R_0kZVPF5OzpKx1JP",
"R_0l9w43DQvy3disZ", "R_1AqjSR9vOU1ecMB", "R_20nzAWfOPh7nRml",
"R_2iuk2vfsLzdbdLD", "R_2rzLvsPBavktV0V", "R_3mk8vHXoLibFJFb",
"R_3WAKxw6owkv5dtj", "R_3XjQKXAe1IVn6bX", "R_43flXUcbx5ZNwb3",
"R_4YZTJthDHPHz6Fn", "R_5ilw7k35mqiF43P", "R_5pOe7d5B7dh2y1L",
"R_5pR3aBjSgjNcgND", "R_6G8L4B63fGPld3v", "R_6gvwrXO1HJ9NGlL",
"R_6JOpk29oUfdYZY9", "R_6mX2XdSTblLZzyB", "R_6P8nBxzGBhTP9D7",
"R_73rsOrN9LV2A0ip", "R_79eIz74uWskf76Z", "R_7PvUht53GEWgmpf",
"R_7X37d6jGnnqUWJ7", "R_8Ag8VoBJNjTwxhz", "R_8jkjYiRh3PUj3rT",
"R_8oanUwlXQzRJmtL", "R_9nb3YiSBKl2UfHL", "R_9TDvGlh6Pr9B8YB",
"R_b1kxY4eRtLTUHXf", "R_bJwTh2AXEDsH1qZ", "R_cGAGTr9k3pRO4h7",
"R_cOLtGnG0L4dyJVj", "R_cu9j4828HAdCVAp", "R_d0TtYBrHAEW6BW5",
"R_d4J5MjkjxjJTagl", "R_dpxrFpx13GXqrGt", "R_e4H0mr5bZ6Ek3f7",
"R_egSsGaeyZskOkwl", "R_en9qnWap5NwCnnT", "R_ePpA9pU2ddLKnJP",
"R_erLj5m7VyGkLSC1", "R_eUSfJoA9fyciCbz", "R_eyXQvu35fK8dzLf",
"R_ezgC8GU1CBwlzOR", "R_00WRlb700n1GjXv", "R_07gbXR4Ha6OJB09",
"R_0Au3bpA2SIJkoJv", "R_0DMu9qBNcmH06RT", "R_0H9Ij1iJbxxauhv",
"R_0HtzJMAlUmFd7eJ", "R_0kZVPF5OzpKx1JP", "R_0l9w43DQvy3disZ",
"R_1AqjSR9vOU1ecMB", "R_20nzAWfOPh7nRml", "R_2iuk2vfsLzdbdLD",
"R_2rzLvsPBavktV0V", "R_3mk8vHXoLibFJFb", "R_3WAKxw6owkv5dtj",
"R_3XjQKXAe1IVn6bX", "R_43flXUcbx5ZNwb3", "R_4YZTJthDHPHz6Fn",
"R_5ilw7k35mqiF43P", "R_5pOe7d5B7dh2y1L", "R_5pR3aBjSgjNcgND",
"R_6G8L4B63fGPld3v", "R_6gvwrXO1HJ9NGlL", "R_6JOpk29oUfdYZY9",
"R_6mX2XdSTblLZzyB", "R_6P8nBxzGBhTP9D7", "R_73rsOrN9LV2A0ip",
"R_79eIz74uWskf76Z", "R_7PvUht53GEWgmpf", "R_7X37d6jGnnqUWJ7",
"R_8Ag8VoBJNjTwxhz", "R_8jkjYiRh3PUj3rT", "R_8oanUwlXQzRJmtL",
"R_9nb3YiSBKl2UfHL", "R_9TDvGlh6Pr9B8YB", "R_b1kxY4eRtLTUHXf",
"R_bJwTh2AXEDsH1qZ", "R_cGAGTr9k3pRO4h7", "R_cOLtGnG0L4dyJVj",
"R_cu9j4828HAdCVAp", "R_d0TtYBrHAEW6BW5", "R_d4J5MjkjxjJTagl",
"R_dpxrFpx13GXqrGt", "R_e4H0mr5bZ6Ek3f7", "R_egSsGaeyZskOkwl",
"R_en9qnWap5NwCnnT", "R_ePpA9pU2ddLKnJP", "R_erLj5m7VyGkLSC1",
"R_eUSfJoA9fyciCbz", "R_eyXQvu35fK8dzLf", "R_ezgC8GU1CBwlzOR",
"R_00WRlb700n1GjXv", "R_07gbXR4Ha6OJB09", "R_0Au3bpA2SIJkoJv",
"R_0DMu9qBNcmH06RT", "R_0H9Ij1iJbxxauhv", "R_0HtzJMAlUmFd7eJ",
"R_0kZVPF5OzpKx1JP", "R_0l9w43DQvy3disZ", "R_1AqjSR9vOU1ecMB",
"R_20nzAWfOPh7nRml", "R_2iuk2vfsLzdbdLD", "R_2rzLvsPBavktV0V",
"R_3mk8vHXoLibFJFb", "R_3WAKxw6owkv5dtj", "R_3XjQKXAe1IVn6bX",
"R_43flXUcbx5ZNwb3", "R_4YZTJthDHPHz6Fn", "R_5ilw7k35mqiF43P",
"R_5pOe7d5B7dh2y1L", "R_5pR3aBjSgjNcgND", "R_6G8L4B63fGPld3v",
"R_6gvwrXO1HJ9NGlL", "R_6JOpk29oUfdYZY9", "R_6mX2XdSTblLZzyB",
"R_6P8nBxzGBhTP9D7", "R_73rsOrN9LV2A0ip", "R_79eIz74uWskf76Z",
"R_7PvUht53GEWgmpf", "R_7X37d6jGnnqUWJ7", "R_8Ag8VoBJNjTwxhz",
"R_8jkjYiRh3PUj3rT", "R_8oanUwlXQzRJmtL", "R_9nb3YiSBKl2UfHL",
"R_9TDvGlh6Pr9B8YB", "R_b1kxY4eRtLTUHXf", "R_bJwTh2AXEDsH1qZ",
"R_cGAGTr9k3pRO4h7", "R_cOLtGnG0L4dyJVj", "R_cu9j4828HAdCVAp",
"R_d0TtYBrHAEW6BW5", "R_d4J5MjkjxjJTagl", "R_dpxrFpx13GXqrGt",
"R_e4H0mr5bZ6Ek3f7", "R_egSsGaeyZskOkwl", "R_en9qnWap5NwCnnT",
"R_ePpA9pU2ddLKnJP", "R_erLj5m7VyGkLSC1", "R_eUSfJoA9fyciCbz",
"R_eyXQvu35fK8dzLf", "R_ezgC8GU1CBwlzOR", "R_00WRlb700n1GjXv",
"R_07gbXR4Ha6OJB09", "R_0Au3bpA2SIJkoJv", "R_0DMu9qBNcmH06RT",
"R_0H9Ij1iJbxxauhv", "R_0HtzJMAlUmFd7eJ", "R_0kZVPF5OzpKx1JP",
"R_0l9w43DQvy3disZ", "R_1AqjSR9vOU1ecMB", "R_20nzAWfOPh7nRml",
"R_2iuk2vfsLzdbdLD", "R_2rzLvsPBavktV0V", "R_3mk8vHXoLibFJFb",
"R_3WAKxw6owkv5dtj", "R_3XjQKXAe1IVn6bX", "R_43flXUcbx5ZNwb3",
"R_4YZTJthDHPHz6Fn", "R_5ilw7k35mqiF43P", "R_5pOe7d5B7dh2y1L",
"R_5pR3aBjSgjNcgND", "R_6G8L4B63fGPld3v", "R_6gvwrXO1HJ9NGlL",
"R_6JOpk29oUfdYZY9", "R_6mX2XdSTblLZzyB", "R_6P8nBxzGBhTP9D7",
"R_73rsOrN9LV2A0ip", "R_79eIz74uWskf76Z", "R_7PvUht53GEWgmpf",
"R_7X37d6jGnnqUWJ7", "R_8Ag8VoBJNjTwxhz", "R_8jkjYiRh3PUj3rT",
"R_8oanUwlXQzRJmtL", "R_9nb3YiSBKl2UfHL", "R_9TDvGlh6Pr9B8YB",
"R_b1kxY4eRtLTUHXf", "R_bJwTh2AXEDsH1qZ", "R_cGAGTr9k3pRO4h7",
"R_cOLtGnG0L4dyJVj", "R_cu9j4828HAdCVAp", "R_d0TtYBrHAEW6BW5",
"R_d4J5MjkjxjJTagl", "R_dpxrFpx13GXqrGt", "R_e4H0mr5bZ6Ek3f7",
"R_egSsGaeyZskOkwl", "R_en9qnWap5NwCnnT", "R_ePpA9pU2ddLKnJP",
"R_erLj5m7VyGkLSC1", "R_eUSfJoA9fyciCbz", "R_eyXQvu35fK8dzLf",
"R_ezgC8GU1CBwlzOR", "R_00WRlb700n1GjXv", "R_07gbXR4Ha6OJB09",
"R_0Au3bpA2SIJkoJv", "R_0DMu9qBNcmH06RT", "R_0H9Ij1iJbxxauhv",
"R_0HtzJMAlUmFd7eJ", "R_0kZVPF5OzpKx1JP", "R_0l9w43DQvy3disZ",
"R_1AqjSR9vOU1ecMB", "R_20nzAWfOPh7nRml", "R_2iuk2vfsLzdbdLD",
"R_2rzLvsPBavktV0V", "R_3mk8vHXoLibFJFb", "R_3WAKxw6owkv5dtj",
"R_3XjQKXAe1IVn6bX", "R_43flXUcbx5ZNwb3", "R_4YZTJthDHPHz6Fn",
"R_5ilw7k35mqiF43P", "R_5pOe7d5B7dh2y1L", "R_5pR3aBjSgjNcgND",
"R_6G8L4B63fGPld3v", "R_6gvwrXO1HJ9NGlL", "R_6JOpk29oUfdYZY9",
"R_6mX2XdSTblLZzyB", "R_6P8nBxzGBhTP9D7", "R_73rsOrN9LV2A0ip",
"R_79eIz74uWskf76Z", "R_7PvUht53GEWgmpf", "R_7X37d6jGnnqUWJ7",
"R_8Ag8VoBJNjTwxhz", "R_8jkjYiRh3PUj3rT", "R_8oanUwlXQzRJmtL",
"R_9nb3YiSBKl2UfHL", "R_9TDvGlh6Pr9B8YB", "R_b1kxY4eRtLTUHXf",
"R_bJwTh2AXEDsH1qZ", "R_cGAGTr9k3pRO4h7", "R_cOLtGnG0L4dyJVj",
"R_cu9j4828HAdCVAp", "R_d0TtYBrHAEW6BW5", "R_d4J5MjkjxjJTagl",
"R_dpxrFpx13GXqrGt", "R_e4H0mr5bZ6Ek3f7", "R_egSsGaeyZskOkwl",
"R_en9qnWap5NwCnnT", "R_ePpA9pU2ddLKnJP", "R_erLj5m7VyGkLSC1",
"R_eUSfJoA9fyciCbz", "R_eyXQvu35fK8dzLf", "R_ezgC8GU1CBwlzOR"
), variable = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L), .Label = c("Cost Efficency", "Simplicity", "Reglatory Ease",
"Responsibility", "Approval"), class = "factor"), value = c(33.33,
16.66, 0, NA, 83.33, NA, 66.66, NA, NA, NA, 83.33, NA, NA, NA,
83.33, NA, NA, NA, NA, 33.33, NA, 0, 66.66, NA, NA, NA, 33.33,
NA, NA, NA, 16.66, NA, 0, NA, NA, NA, NA, NA, 50, NA, NA, NA,
16.66, 83.33, NA, 33.33, 50, NA, 10, 16.66, 100, 33.3, 66.6,
NA, 0, NA, 0, NA, NA, NA, 33.3, NA, NA, NA, 16.6, NA, NA, NA,
NA, 16.6, NA, 50, 50, NA, NA, NA, 0, NA, NA, NA, 83.3, NA, 16.6,
NA, NA, NA, NA, NA, 0, NA, NA, NA, 16.6, 0, NA, 83.3, 100, NA,
100, 16.6, 83.3, 16.6, 50, NA, 100, NA, 33.3, NA, NA, NA, 100,
NA, NA, NA, 66.6, NA, NA, NA, NA, 66.6, NA, 33.3, 33.3, NA, NA,
NA, 0, NA, NA, NA, 16.6, NA, 16.6, NA, NA, NA, NA, NA, 0, NA,
NA, NA, 50, 100, NA, 83.3, 16.6, NA, 50, 83.3, 83.3, 100, 66.6,
NA, 100, NA, 33.3, NA, NA, NA, 33.3, NA, NA, NA, 66.6, NA, NA,
NA, NA, 100, NA, 66.6, 100, NA, NA, NA, 0, NA, NA, NA, 33.3,
NA, 33.3, NA, NA, NA, NA, NA, 100, NA, NA, NA, 50, 50, NA, 33.3,
0, NA, 16.6, 50, 33.33, 0, 50, NA, 0, NA, 0, NA, NA, NA, 63.33,
NA, NA, NA, 16.6, NA, NA, NA, NA, 100, NA, 83.33, 33.33, NA,
NA, NA, 16.6, NA, NA, NA, 50, NA, 0, NA, NA, NA, NA, NA, 83.33,
NA, NA, NA, 100, 50, NA, 50, 83.33, NA, 100, 33.33)), row.names = c(NA,
-250L), .Names = c("Mean", "Brands", "Country", "ResponseID",
"variable", "value"), class = "data.frame")
答案 0 :(得分:0)
致力于解决问题......就目前而言,这已经到了......
使用以下代码
p = ggplot(Tabresults,aes(x=value,y=Mean),shape=variable)+stat_smooth(aes(colour=variable),size=1,method = "lm" ,span =0.3, se=F)
p + geom_dl(aes(label = variable), method = list("angled.boxes"))
其中geom_dl(对我而言)不在ggplot2中,而是在直接标签中。定位方法仍然不好......我现在正在寻找
http://directlabels.r-forge.r-project.org/docs/
他们描述了各种定位方法。
编辑:我开始认为他们说明为什么这些标签现在如此混乱......是因为该方法试图不相互碰撞标签。
Edit2:绕过包...只使用注释
# Get mean positions of all the variables..
test = Tabresults[,.(mean_value = mean(value,na.rm = TRUE),mean_mean = mean(Mean, na.rm = TRUE)),by = variable]
# Getting the angle was a bit more difficult.
# I could not find the values from the stat_smooth object in the ggplot_object.. so I had to re-do the calculations
list_variable = unique(Tabresults$variable)
list_angle = c()
for(i in 1:length(list_variable)){
i_variable = list_variable[i]
list_angle[i] = coef(lm(Mean ~ value, data = Tabresults[variable == i_variable][!is.na(Mean)]))[2]
}
# Combine all the obtained results into one data.table
test_test = data.table(variable = list_variable, angle = list_angle)
# Add these angles to the original mean-location per variable
final_markup = merge(test,test_test,by = "variable")
# Correct some angles
final_markup[,angle := angle*100]
final_markup[angle <0, angle := 360 - abs(angle)]
# And finally plot it
p + annotate("text", x = final_markup$mean_value, y = final_markup$mean_mean,angle = final_markup$angle*2,label = final_markup$variable)
这会带来以下图像。还不理想,但是,嘿,这是一些东西。