R问题与linetype geom_smooth ggplot

时间:2017-05-25 14:55:50

标签: r ggplot2

我在同一个地块上绘制来自两个不同变量的回归线。我想制作一条回归线,另一条是实心的。

我尝试过使用类似问题中建议的解决方案:Plot dashed regression line with geom_smooth in ggplot2,但是当我使用linetype ="虚线"在我的代码中,我仍然得到实线。我想我必须在我的代码中的某处覆盖了linetype命令。实际上,有两个问题:(1)如何修复我的代码以生成虚线回归线,(2)是否可以在同一个图上使1个回归实体和1个虚线?

任何建议都赞赏!

当前的ggplot代码:

ggplot(CanksVolumes, aes(TotalCankers, BA_05thru14_mm2, 
                         color=Site, alpha=Treatment)) + 
  scale_alpha_discrete(range = c(0.4, 1)) + 
  scale_color_brewer(palette = 'Set1') +
  geom_point() + geom_smooth(method = "lm", se=F, aes(fill=Site, linetype="dashed")) + 
  xlab("Total Number of Cankers per Tree") + 
  ylab("Tree Basal Area (mm^2) 2005-2014") +
  ggtitle("Total Number of Cankers Associated with Recent Growth (Basal Area Last 10 Years)") +
  facet_wrap(~Site)

它很大,但是一组可重复的数据:

CanksVolumes <- structure(list(Unique_ID_Tree = c("M3T_1", "M3T_2", "M3T_3", 
"M3T_4", "M3T_5", "M3T_6", "M3U_1", "M3U_2", "M3U_3", "M3U_4", 
"M3U_5", "M3U_6", "N1T_1", "N1T_2", "N1T_3", "N1T_4", "N1T_5", 
"N1T_6", "N1U_1", "N1U_2", "N1U_3", "N1U_4", "N1U_5", "N1U_6", 
"N2T_1", "N2T_2", "N2T_3", "N2T_4", "N2T_5", "N2T_6", "N2U_1", 
"N2U_2", "N2U_3", "N2U_4", "N2U_5", "N2U_6"), Disc_ID = c("M3T1045", 
"M3T2045", "M3T3045", "M3T4045", "M3T5045", "M3T6045", "M3U1045", 
"M3U2045", "M3U3045", "M3U4045", "M3U5045", "M3U6045", "N1T1045", 
"N1T2045", "N1T3045", "N1T4045", "N1T5045", "N1T6045", "N1U1045", 
"N1U2045", "N1U3045", "N1U4045", "N1U5045", "N1U6045", "N2T1045", 
"N2T2045", "N2T3045", "N2T4045", "N2T5045", "N2T6045", "N2U1045", 
"N2U2045", "N2U3045", "N2U4045", "N2U5045", "N2U6045"), TotalBA_mm2 = c(48422.0665741449, 
67345.5883698897, 93132.2607802485, 131867.048278746, 70774.4553777143, 
107360.658676709, 21773.5273135633, 24311.3559989519, 35102.0690873188, 
51817.4544898566, 24865.5461220263, 39005.9400223312, 24441.4199925537, 
43910.513721618, 20070.0181216216, 37068.1963964739, 49682.9417571679, 
86858.8816403778, 22417.9549103913, 35151.8985952557, 61251.0544197884, 
19683.6928319038, 30376.0140061034, 37578.4060759377, 68388.2050444103, 
65538.2384603496, 49352.4211809415, 39297.7321533062, 58503.2107932949, 
66813.9962945424, 51944.222010287, 68390.0591244299, 19013.6024003523, 
27550.4271046627, 39560.2876397285, 19580.3808789065), BA_85thru14_mm2 = c(14611.6335711751, 
45711.4998451498, 44404.7114510255, 83650.6979165133, 39953.2185049916, 
74813.8132733016, 6097.83748871461, 11675.9659731525, 11733.732636389, 
31782.0733791433, 8772.57695473424, 21371.2188664859, 11481.2053713276, 
25176.936475585, 7234.60603316087, 16459.7694084024, 32266.4395069078, 
60914.7750214847, 8231.02514160435, 16712.6392484347, 39236.2448736159, 
8996.60527146338, 12366.013456859, 23577.0687802852, 42737.3221959725, 
45669.5980237521, 28106.5850019948, 27127.3841712043, 37867.2943668496, 
44642.1681882516, 27352.3825332051, 43690.2558752766, 12840.7406254419, 
16954.3949913134, 26754.5778521084, 12128.8850034988), BA_90thru14_mm2 = c(9894.92804248437, 
36167.3432956235, 35155.176482765, 68790.9162216748, 33046.7820717523, 
61587.8471229157, 3486.06635597643, 8982.57698269882, 8583.83641098213, 
25750.4409909132, 6665.70684447704, 17971.4243926971, 7512.21138830519, 
19330.3468603148, 4458.61783312802, 11432.6404706726, 24656.1459780374, 
52524.978876548, 4933.55167452531, 10792.431696628, 31519.0778152806, 
5710.4451978927, 7394.0671124523, 19331.1910313936, 29202.1275852957, 
34989.6048109836, 21700.6971659423, 20344.6934766608, 25223.2209601062, 
32210.916157596, 20425.1667390753, 31990.4055072938, 10303.0519074308, 
13579.6935867213, 18470.724354459, 8081.36636860446), BA_95thru14_mm2 = c(4740.04634002735, 
28490.028172621, 27997.2429880936, 55112.0390582871, 27269.3294451689, 
51404.7947400297, 2273.91726244429, 6946.27671954662, 6407.33971367258, 
21356.7385496624, 4166.94646811615, 14773.5595314962, 3825.3588872101, 
14318.9577635937, 2535.89333865027, 7251.80786143471, 18995.9844461404, 
47198.4101565899, 2771.04844456734, 6794.24947471245, 25274.2196871474, 
2796.4306942262, 3428.30101220893, 15553.6019328705, 18429.9112362874, 
25781.6974753387, 15706.6985412864, 14790.3176255157, 14877.48038484, 
19672.7805789366, 12867.5381751576, 21446.4414468684, 7524.84918302853, 
9595.09411604172, 11102.2617687705, 4291.07679115986), BA_00thru14_mm2 = c(2668.97176894301, 
20957.1604073531, 22583.0193029237, 44065.3476653289, 22046.9060484913, 
42231.0690665709, 1676.88363814062, 5235.62447896369, 4398.9640151846, 
16670.8727260078, 2452.89855543217, 11330.6319456177, 583.376762896961, 
9263.89816022673, 913.416304739346, 3838.62931387087, 14006.0342876873, 
42521.6950917601, 819.828294146425, 2275.50594071647, 19359.5637568162, 
701.849592792751, 1359.72696666447, 11193.9304013406, 11317.4437752774, 
18190.5251810393, 10743.8303157992, 10742.7464663337, 7512.77441511578, 
11790.8703276434, 7618.23120253274, 14767.3494636164, 4860.00919904441, 
6318.53964422177, 6823.86677348072, 1638.34567393514), BA_05thru14_mm2 = c(1208.47399247252, 
15818.2262837189, 18911.4211191174, 34809.4601705281, 17218.2163290883, 
34546.9538971548, 1082.06713002035, 3497.33449484262, 2737.87164592433, 
12372.7144771307, 1568.68567918651, 7711.78904441141, 309.367959571136, 
6352.72038906271, 639.154383293422, 2846.52320059213, 11798.1159335768, 
33797.0001936679, 500.867418575699, 1658.15875632353, 13619.8306278706, 
351.531651566084, 457.927944832468, 6665.61686298025, 7822.17194021538, 
12104.9842818115, 7253.89335745231, 7342.93037838743, 3517.49728361725, 
7245.34692795678, 5273.63431945295, 9505.533501567, 3488.01046775825, 
4839.60067489241, 4142.03476620495, 463.990530645106), TotalCankers = c(61, 
65, 44, 31, 24, 23, 29, 37, 36, 9, 39, 24, 91, 89, 53, 61, 47, 
6, 51, 47, 39, 60, 90, 34, 34, 30, 47, 17, 62, 49, 61, 84, 59, 
84, 0, 65), WidthCankers_cm = c(131.5, 139.2, 95.6, 50, 51.2, 
76.4, 59.8, 38.8, 39.7, 13.6, 156.9, 24.3, 594.9, 136.6, 188.6, 
141.7, 275.8, 11.9, 118.8, 353, 53.7, 256.5, 347.3, 80.8, 49, 
28.2, 20.3, 5.5, 77.4, 56, 147.5, 155, 48.6, 117.4, 0, 79.1), 
    Treatment = c("T", "T", "T", "T", "T", "T", "U", "U", "U", 
    "U", "U", "U", "T", "T", "T", "T", "T", "T", "U", "U", "U", 
    "U", "U", "U", "T", "T", "T", "T", "T", "T", "U", "U", "U", 
    "U", "U", "U"), Site = c("M3", "M3", "M3", "M3", "M3", "M3", 
    "M3", "M3", "M3", "M3", "M3", "M3", "N1", "N1", "N1", "N1", 
    "N1", "N1", "N1", "N1", "N1", "N1", "N1", "N1", "N2", "N2", 
    "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2", "N2"
    )), .Names = c("Unique_ID_Tree", "Disc_ID", "TotalBA_mm2", 
"BA_85thru14_mm2", "BA_90thru14_mm2", "BA_95thru14_mm2", "BA_00thru14_mm2", 
"BA_05thru14_mm2", "TotalCankers", "WidthCankers_cm", "Treatment", 
"Site"), row.names = c(NA, -36L), class = "data.frame")

2 个答案:

答案 0 :(得分:4)

您可以在aes(linetype=Treatment)上使用geom_smooth并添加scale_linetype_manual,而无需更改您的数据。假设这是最初的意图,我还在全球aes上使用了治疗组:

ggplot(CanksVolumes, aes(TotalCankers, BA_05thru14_mm2, 
                         color=Site,group=Treatment)) + 
  scale_alpha_discrete(range = c(0.4, 1)) + 
  scale_color_brewer(palette = 'Set1') +
  scale_linetype_manual(values=c("solid","dashed"))+
  geom_point() + geom_smooth(method = "lm", se=F, aes(linetype=Treatment)) + 
  xlab("Total Number of Cankers per Tree") + 
  ylab("Tree Basal Area (mm^2) 2005-2014") +
  ggtitle("Total Number of Cankers Associated with Recent Growth (Basal Area Last 10 Years)") +
  facet_wrap(~Site)

答案 1 :(得分:1)

CanksVolumes %<>% mutate(Line = ifelse(Treatment == "T", "dashed", "solid"))

ggplot(CanksVolumes, aes(TotalCankers, BA_05thru14_mm2, 
                         color=Site, alpha=Treatment)) + 
  scale_alpha_discrete(range = c(0.4, 1)) + 
  scale_color_brewer(palette = 'Set1') +
  geom_point() + geom_smooth(method = "lm", se=F, aes(fill=Site, linetype=Line)) + 
  xlab("Total Number of Cankers per Tree") + 
  ylab("Tree Basal Area (mm^2) 2005-2014") +
  ggtitle("Total Number of Cankers Associated with Recent Growth (Basal Area Last 10 Years)") +
  facet_wrap(~Site)