TropFishR plot.lfq函数限制,如何在ggplot2中生成相似的图

问题描述 投票:0回答:1

我正在尝试使用TropFishR软件包绘制渔业长度-频率数据的时间序列,这很好,但是对于自定义实际绘制而言,它没有太多选择。

例如,我想每两周查看一次数据,该功能的默认值是按月汇总,我按照包R文档中的建议手动将数据汇总到所需的期间;但是,一旦绘制了所有内容,则轴刻度上的标签仅显示一个周期,而不同时显示两个。

第一个期间的标签2月1日;每个月显示3月01日等,但是第二个期间15 2月; 3月15日不是。像这样:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pbWFnaXplci5pbWFnZXNoYWNrLmNvbS9pbWc5MjIvNDY3Mi9PZDdxSm8ucG5nIn0=” alt_1图像>

我还想对y轴进行标准化,因为我将拥有大约四个这样的图形,并且长度是不同的(男性和女性)。我尝试使用ylim进行此操作失败,因为产生了以下内容:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pbWFnaXplci5pbWFnZXNoYWNrLmNvbS9pbWc5MjQvNzUwOC94NWcyc0YucG5nIn0=” alt =“图像2”>

此程序包的转换产生列表,这是我当前正在使用的代码:

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软件包绘制渔业长度-频率数据的时间序列,这很好,但是对于自定义实际绘制而言,它没有太多选择。例如,我...

r ggplot2
1个回答
0
投票

我通过完全规避TropFishR软件包解决了这个问题,我使用my other question中的代码计算了长度-频率,将其封装到函数中,并通过dlply运行以获取每个时间段的LF表,可以轻松地对其进行转换到数据框并使用geom_bar以任何所需样式绘制。

© www.soinside.com 2019 - 2024. All rights reserved.