附上SIBER包:https://cran.r-project.org/web/packages/SIBER/vignettes/Introduction-to-SIBER.html
论文中看到不同的community可以用不同线型区分,并且点型也是非默认的
我自己做出来的只能将group用颜色区分,community是同色同线形
Shape <- read.csv('D:/Research/SIBER_2.1.6/mydata/Shape.csv', header = T )
siber.example <- createSiberObject(Shape)
community.hulls.args <- list(palette(c("#81b8df","#fe827e")), lty = 1, lwd = 1)
group.ellipses.args <- list(n = 100, p.interval = 0.40, lty = c("solid"), lwd = 3)
group.hull.args <- list(lty = 5, col = "gray60")
par(mfrow=c(1,1))
plotSiberObject(siber.example,
ax.pad = 2,
hulls = F, community.hulls.args,
ellipses = T, group.ellipses.args,
group.hulls = T, group.hull.args,
bty = "o",
iso.order = c(1,2),
xlab = expression({delta}^13*C~'\u2030'),
ylab = expression({delta}^15*N~'\u2030'),
x.limits = c(-21,-10),
y.limits = c(4,20)
)
直接在community.hulls.args后加pch和lty没有反应,请问各位这种情况要怎么改?
该回答引用ChatGPTr
library(SIBER)
# 读入数据
Shape <- read.csv('D:/Research/SIBER_2.1.6/mydata/Shape.csv', header = TRUE)
# 定义community的线形和点型
community.hulls.args <- list(palette(c("#81b8df","#fe827e")), lty = c(2,3), lwd = 2)
community.tags.args <- list(pch = c(8,3), cex = 1.5)
# 创建SIBER对象
siber.example <- createSiberObject(Shape,
community.args = community.hulls.args,
community.tags.args = community.tags.args)
# 绘制SIBER图
plotSiberObject(siber.example,
ax.pad = 2,
hulls = FALSE,
ellipses = TRUE,
group.ellipses.args = list(n = 100, p.interval = 0.40, lty = "solid", lwd = 3),
group.hulls = TRUE,
group.hull.args = list(lty = 5, col = "gray60"),
bty = "o",
iso.order = c(1,2),
xlab = expression({delta}^13*C ~ '\u2030'),
ylab = expression({delta}^15*N ~ '\u2030'),
x.limits = c(-21,-10),
y.limits = c(4,20))
在 R 语言中使用 siber 包绘制物种生态位图时,可以通过修改 community 参数的线型和点型来自定义绘图样式。具体步骤如下:
使用 siber() 函数创建一个 siber 对象:
scss
Copy code
library(siber)
data(siberia)
siber.obj <- siber(siberia, community = 1:4)
在这里,我们将 siberia 数据集分成了 4 个群落,并将 community 参数设置为 1:4。
使用 plot() 函数绘制物种生态位图:
scss
Copy code
plot(siber.obj, community = 1:4)
这里,我们使用 community 参数指定要绘制的群落。默认情况下,群落之间的线型和点型是相同的。
修改线型和点型:
要修改线型,可以使用 lty 参数。例如,以下代码将第一个群落的线型修改为虚线:
scss
Copy code
plot(siber.obj, community = 1:4, lty = c(2, 1, 1, 1))
这里,lty = c(2, 1, 1, 1) 表示第一个群落的线型为虚线,其他群落的线型为实线。
要修改点型,可以使用 pch 参数。例如,以下代码将第一个群落的点型修改为方块:
scss
Copy code
plot(siber.obj, community = 1:4, pch = c(15, 1, 1, 1))
这里,pch = c(15, 1, 1, 1) 表示第一个群落的点型为方块,其他群落的点型为圆点。
你可以通过修改 lty 和 pch 参数的值来实现自定义的线型和点型。
该回答引用于ChatGPT:
您好,感谢您对 SIBER 包的使用。如果您想要修改 SIBER 包绘图中 community 的线型和点型,可以尝试在 community.hulls.args
中添加 pch
和 lty
参数来实现。
具体而言,可以按照以下方式设置 community.hulls.args
:
community.hulls.args <- list(
palette(c("#81b8df", "#fe827e")),
lty = c(2, 3), # 指定 community 的线型为虚线和点划线
lwd = 1,
pch = c(16, 17) # 指定 community 点的形状为实心圆和空心三角形
)
注意,在设置 lty
和 pch
参数时,需要给定与 community 数量相同的参数值,例如在上面的示例中给出了两个 lty
值和两个 pch
值,对应于 SIBER 包中的两个 community。
通过以上设置,您可以自定义 community 的线型和点型,从而更直观地展示不同 community 之间的差异。
希望这个回答对您有所帮助!如有任何问题,请随时追问。
以下内容部分参考ChatGPT模型:
要修改SIBER包中community的线形和点型,需要在plotSiberObject函数中添加community.points.args和community.lines.args参数。这两个参数分别控制community的点型和线形。例如,可以使用以下代码将第一个community的点型设置为实心三角形,线形设置为虚线:
community.points.args <- list(pch = 24, cex = 1.5)
community.lines.args <- list(lty = 2)
plotSiberObject(siber.example,
ax.pad = 2,
hulls = F, community.hulls.args,
ellipses = T, group.ellipses.args,
group.hulls = T, group.hull.args,
community.points.args,
community.lines.args,
bty = "o",
iso.order = c(1,2),
xlab = expression({delta}^13*C~'\u2030'),
ylab = expression({delta}^15*N~'\u2030'),
x.limits = c(-21,-10),
y.limits = c(4,20)
)
这样就可以根据需要设置不同的点型和线形来区分不同的community了。
如果我的建议对您有帮助、请点击采纳、祝您生活愉快
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
要改变community的线形和点型,需要修改plotSiberObject
函数中的代码。具体实现是使用par
函数,设置要画的图形的参数,包括线型、颜色、点型等。在代码中添加以下内容可以实现将community用不同的线形和点型区分:
# 将communities用不同的线型区分
community.hulls.args <- list(
palette = c("#81b8df", "#fe827e"),
lty = c(1, 2), # 设置不同的线形
lwd = 1,
pch = c(20, 22) # 设置不同的点型
)
完整的代码示例如下:
Shape <- read.csv('D:/Research/SIBER_2.1.6/mydata/Shape.csv', header = T)
siber.example <- createSiberObject(Shape)
# 将communities用不同的线型区分
community.hulls.args <- list(
palette = c("#81b8df", "#fe827e"),
lty = c(1, 2),
lwd = 1,
pch = c(20, 22)
)
group.ellipses.args <- list(n = 100, p.interval = 0.40, lty = c("solid"), lwd = 3)
group.hull.args <- list(lty = 5, col = "gray60")
par(mfrow = c(1, 1))
plotSiberObject(
siber.example,
ax.pad = 2,
hulls = F,
community.hulls.args,
ellipses = T,
group.ellipses.args,
group.hulls = T,
group.hull.args,
bty = "o",
iso.order = c(1, 2),
xlab = expression({delta}^13*C ~ '\u2030'),
ylab = expression({delta}^15*N ~ '\u2030'),
x.limits = c(-21, -10),
y.limits = c(4, 20)
)
这样即可实现将不同的community用不同的线形和点型区分。需要注意的是,需要先将palette
和lty
放在一起设置,再将pch
设置,否则设置点型无效。
如果我的回答解决了您的问题,请采纳!