我正在尝试使用 TropFishR 包绘制渔业长度频率数据的时间序列,这很棒,但它没有提供太多自定义实际绘图的选项。
比如我想每两周查看一次数据,函数默认是按月聚合,我按照包的R文档的建议,手动把我的数据聚合到需要的时间段;但是,一旦绘制了所有内容,轴刻度上的标签只会显示一个周期,而不是两个周期。
第一期01-Feb的标签;每个月都显示 01-Mar 等,但第二个时期是 15-Feb;3 月 15 日不是。像这样:
我还想标准化 y 轴,因为我将有大约四个这样的图表,并且长度不同(男性和女性)。我尝试用 ylim 做到这一点失败了,因为产生了以下内容:
这个包的转换产生列表,这是我目前使用的代码:
require(TropFishR)
data$Period<-as.Date(data$Period)
LF_graph <- lfqCreate(data, Lname = "Length", Dname = "Period",
aggregate_dates = FALSE, species="hake",
length_unit = "cm", bin_size = 1, plot=FALSE)
lw<-lfqModify(LF_graph, bin_size=1)
lw_f<-lfqRestructure(lw,MA=3,addl.sqrt = FALSE)
prop.table(lw_f$catch, margin=2)*100
lw_f$catch<-prop.table(lw_f$catch, margin=2)*100
plot(lw_f, Fname = "catch", date.axis = "modern", date.format="%d-%b",
ylim=c(10,35), xlim=range(lw_f$dates)+c(-15,+15),
hist.sc=0.95, image.col=NA, ylab="Length classes (cm)")
这是输出,我打电话dput((head(lw_f,5))
是因为我怕20太长了
list(species = "hake", stock = NA, dates = structure(c(17928,
17942, 17956, 17970, 17987, 18001, 18017), class = "Date"), midLengths = c(8.5,
9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 16.5, 17.5, 18.5, 19.5,
20.5, 21.5, 22.5, 23.5, 24.5, 25.5, 26.5, 27.5, 28.5), catch = structure(c(0.104712041884817,
0.104712041884817, 0.942408376963351, 2.19895287958115, 4.18848167539267,
3.87434554973822, 2.72251308900524, 1.8848167539267, 1.04712041884817,
0.628272251308901, 0.104712041884817, 0.209424083769634, 1.04712041884817,
7.32984293193717, 19.8952879581152, 27.0157068062827, 18.5340314136126,
7.12041884816754, 0.837696335078534, 0.104712041884817, 0.104712041884817,
0, 0.117096018735363, 0.117096018735363, 0, 0.234192037470726,
0.936768149882904, 1.63934426229508, 1.87353629976581, 1.28805620608899,
1.28805620608899, 0.117096018735363, 0, 0.468384074941452, 5.62060889929742,
20.1405152224824, 36.4168618266979, 21.7798594847775, 7.02576112412178,
0.936768149882904, 0, 0, 0, 0, 0, 1.06382978723404, 6.38297872340426,
8.51063829787234, 10.6382978723404, 22.3404255319149, 8.51063829787234,
12.7659574468085, 11.7021276595745, 6.38297872340426, 2.12765957446809,
3.19148936170213, 0, 0, 4.25531914893617, 2.12765957446809, 0,
0, 0, 0, 0.162337662337662, 0.162337662337662, 1.46103896103896,
1.78571428571429, 4.22077922077922, 6.00649350649351, 8.6038961038961,
11.6883116883117, 10.5519480519481, 8.44155844155844, 6.49350649350649,
1.2987012987013, 0.649350649350649, 0.162337662337662, 1.13636363636364,
7.95454545454545, 16.3961038961039, 8.92857142857143, 2.92207792207792,
0.974025974025974, 0, 0, 4, 0, 8, 0, 0, 8, 8, 24, 20, 8, 12,
8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 66.6666666666667, 33.3333333333333, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 4.76190476190476, 9.52380952380952,
4.76190476190476, 4.76190476190476, 4.76190476190476, 14.2857142857143,
23.8095238095238, 28.5714285714286, 4.76190476190476), .Dim = c(21L,
7L)))
我一直无法找到使用 TropFishR 包获得这种自定义级别的方法,有没有办法使用另一个包(例如 ggplot2)重现此图,但也许可以使用 TropFishR 包中的转换数据?
谢谢!
我通过完全绕过 TropFishR 包解决了这个问题,我使用我的另一个问题中的代码计算了长度频率,将它转换为一个函数并通过 dlply 运行它以获得每个时间段的 LF 表,它可以很容易地转换为数据框并使用 geom_bar 以所需的任何样式绘制。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句