我正在使用一个大型数据库(数万个)点来处理一组气候变量,我想在一个散点图中绘制并按Forest.type进行分组。我还有一组网站(site1-7),我想在同一个图表上绘制。 Sites1-7只是单个点,每个点代表Forest.type中不同的因子级别,而其他级别每个都有数千个点。
我遇到的问题是,当我绘制点图时,Sites1-7的图形不正确(即点不对应数据)或者我格式化图形不正确。我花了很多时间试图找到我的错误,并以不同的方式修改下面的图表代码,但还没有能够这样做。
我的数据的一个子集(combo.df3)如下所示。
CID Forest.type PptAnn TmaxAnn
1 61228534 site1 62744.88 783.0098
2 61228535 site2 79771.21 800.0628
3 61228536 site3 129822.54 831.5902
4 61228537 site4 130943.42 683.3425
5 61228538 site5 96531.09 902.3692
6 61228539 site6 98594.19 973.1728
7 61228540 site7 91160.96 1044.0000
11000 778 pipo 41832.00 1382.0000
21000 3269 pipo 41829.00 1074.0000
31000 3427 pipo 45357.00 1119.0000
993 1664171 pipo 41739.00 1309.0000
1993 3877208 pipo 56711.00 1103.0000
2993 6076595 pipo 46701.00 1166.0000
3993 7964984 pipo 72754.00 1417.0000
4993 10118766 pipo 61969.00 1083.0000
40993 12452128 dryMC 91025.00 835.0000
41993 24625242 dryMC 62317.00 1176.0000
42993 37503245 dryMC 52043.00 903.0000
43993 49283896 dryMC 40195.00 1124.0000
44993 61171523 dryMC 61583.00 987.0000
80993 8887400 moistMC 116187.00 975.0000
81993 17990513 moistMC 81670.00 1091.0000
82993 27239046 moistMC 83496.00 1316.0000
83993 36961854 moistMC 72694.00 1502.0000
84993 45104630 moistMC 66103.00 1038.0000
120993 253336 cold 40416.00 1065.0000
121993 697374 cold 64542.00 797.0000
122993 1007005 cold 55362.00 793.0000
123993 1467764 cold 72555.00 1407.0000
124993 1759938 cold 66139.00 741.0000
160993 434320 aspen 33372.00 1239.0000
161993 999534 aspen 52696.00 922.0000
162993 1953326 aspen 84496.00 1059.0000
163993 3548225 aspen 87807.00 653.0000
164993 4941243 aspen 60323.00 1001.0000
我的图表代码如下:
ggplot(data=combo.df3, aes(x=PptAnn/1000, y=TmaxAnn/100, group=rev(Forest.type), size=rev(Forest.type))) +
geom_point(aes(color=rev(Forest.type))) +
scale_alpha_manual(values=c(rep(1, times=7), rep(0.5, times=5)), guide="none") +
scale_size_manual(values=rev(c(rep(5, times=7), rep(1, times=5))), guide="none") +
scale_color_manual(values = rev(c('black', 'black', 'black', 'black', 'black', 'black', 'black', 'gold1', 'red3', 'green4', 'darkblue', 'olivedrab3')), guide="none") +
xlab("Annual Precipitation (cm)") + ylab(expression(paste("Annual Tmax ( ",degree,"C", ")"))) +
guides(colour = guide_legend(override.aes = list(size=5), title=NULL)) +
theme(axis.text.x = element_text(colour="black", size=rel(2)),
axis.text.y = element_text(colour="black", size=rel(2)),
axis.title.x = element_text(face="bold",colour="black", size=rel(2), vjust=-.5), axis.title.y = element_text(face="bold",colour="black", size=rel(2)),
legend.text = element_text(size=rel(1.5)), legend.title = element_text(size=rel(1.5)),
legend.position = c(0.85, 0.7), legend.key = element_rect(fill = 'white'),
panel.background = element_rect(fill="white", colour="black"), plot.background = element_blank(),
panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.border = element_blank())
此代码生成以下图形。
仔细观察,大黑点与site1-7的数据不符,正如我想的那样。
我可能在代码中遇到与此问题无关的错误,但我还没有处理过。关于导致此错误的绘图/格式错误的哪些方面的想法?
我还尝试通过将sites1-7分成单独的数据框并添加额外的geom_point参数来绘制图形并格式化这些图来绘制图形。这正确地绘制了所有点,但是我在理解如何在同一图表上格式化来自两个单独数据集的图例时遇到了问题。似乎最好的解决方案是将所有数据放在一个数据帧中。