在面板标题中使用数学符号绘制地层图
Use math symbols in panel titles for stratigraphic plot
我想在此地层图的面板标题中包含数学符号:
library(analogue)
data(V12.122)
Depths <- as.numeric(rownames(V12.122))
names(V12.122)
(plt <- Stratiplot(Depths ~ O.univ + G.ruber + G.tenel + G.pacR,
data = V12.122,
type = c("h","l","g"),
zones = 400))
plt
例如,我想用这个文本代替 "O.univ" 等:
我用这段代码制作了那个文本:
plot(1, type="n", axes=FALSE, ann=FALSE)
title(line = -1, main = expression(phantom()^14*C~years~BP))
title(line = -3, main = expression(delta^18*O))
title(line = -5, main = expression(paste("TP ", mu,"g l"^-1)))
title(line = -10, main = expression("very long title \n with \n line breaks"))
但是如果我尝试更新传递给 Stratiplot
的数据框的名称,代码不会被解析,我们也不会得到正确的文本格式:
V12.122 <- V12.122[, 1:4]
names(V12.122)[1] <- expression(phantom()^14*C~years~BP)
names(V12.122)[2] <- expression(delta^18*O)
names(V12.122)[3] <- expression(paste("TP ", mu,"g l"^-1))
(plt <- Stratiplot(Depths ~ .,
data = V12.122,
type = c("h","l","g"),
zones = 400))
plt
如何让 Stratiplot
解析 colnames 中的表达式并在绘图中正确格式化它们?
我尝试浏览 str(plt)
以查看面板标题的存储位置,但没有成功:
text <- expression(phantom()^14*C~years~BP)
plt$condlevels$ind[1] <- text
names(plt$packet.sizes)[1] <- text
names(plt$par.settings$layout.widths$panel)[1] <- text
从未使用过点阵图,但我认为有机会学习一些东西是值得的。花了太长时间才弄明白。
text <- "c( expression(phantom()^14*C~years~BP),expression(delta^18*O))"
strip = strip.custom(factor.levels=eval(parse(text=text)))
plt <- Stratiplot(Depths ~ .,
data = V12.122[, 1:4],
type = c("h","l","g"),
zones = 400,
strip = strip)
希望这能让你入门。
在 analogue 的当前版本中,您实际上不能这样做;该函数对数据进行了过多的处理,以至于表达式在绘图之前保持未计算状态。我可能会弄清楚这一点以允许表达式作为 data
参数对象的 names
,但是只允许用户传递他们想要的变量标签向量会更容易。
这是github开发版的now implemented,我会在下周初推送到CRAN。
此更改实现了一个新参数 labelValues
,它采用标签向量来标记顶轴。这可以是表达式向量。
下面是用法说明:
library("analogue")
set.seed(1)
df <- setNames(data.frame(matrix(rnorm(200 * 3), ncol = 3)),
c("d13C", "d15N", "d18O"))
df <- transform(df, Age = 1:200)
exprs <- expression(delta^{13}*C, # label for 1st variable
delta^{15}*N, # label for 2nd variable
delta^{18}*O) # label for 3rd variable
Stratiplot(Age ~ ., data = df, labelValues = exprs, varTypes = "absolute", type = "h")
产生
请注意,这只是第一步;我很确定我没有考虑 sort
和 svar
等的任何重新排序,如果它们被使用的话。
我想在此地层图的面板标题中包含数学符号:
library(analogue)
data(V12.122)
Depths <- as.numeric(rownames(V12.122))
names(V12.122)
(plt <- Stratiplot(Depths ~ O.univ + G.ruber + G.tenel + G.pacR,
data = V12.122,
type = c("h","l","g"),
zones = 400))
plt
例如,我想用这个文本代替 "O.univ" 等:
我用这段代码制作了那个文本:
plot(1, type="n", axes=FALSE, ann=FALSE)
title(line = -1, main = expression(phantom()^14*C~years~BP))
title(line = -3, main = expression(delta^18*O))
title(line = -5, main = expression(paste("TP ", mu,"g l"^-1)))
title(line = -10, main = expression("very long title \n with \n line breaks"))
但是如果我尝试更新传递给 Stratiplot
的数据框的名称,代码不会被解析,我们也不会得到正确的文本格式:
V12.122 <- V12.122[, 1:4]
names(V12.122)[1] <- expression(phantom()^14*C~years~BP)
names(V12.122)[2] <- expression(delta^18*O)
names(V12.122)[3] <- expression(paste("TP ", mu,"g l"^-1))
(plt <- Stratiplot(Depths ~ .,
data = V12.122,
type = c("h","l","g"),
zones = 400))
plt
如何让 Stratiplot
解析 colnames 中的表达式并在绘图中正确格式化它们?
我尝试浏览 str(plt)
以查看面板标题的存储位置,但没有成功:
text <- expression(phantom()^14*C~years~BP)
plt$condlevels$ind[1] <- text
names(plt$packet.sizes)[1] <- text
names(plt$par.settings$layout.widths$panel)[1] <- text
从未使用过点阵图,但我认为有机会学习一些东西是值得的。花了太长时间才弄明白。
text <- "c( expression(phantom()^14*C~years~BP),expression(delta^18*O))"
strip = strip.custom(factor.levels=eval(parse(text=text)))
plt <- Stratiplot(Depths ~ .,
data = V12.122[, 1:4],
type = c("h","l","g"),
zones = 400,
strip = strip)
希望这能让你入门。
在 analogue 的当前版本中,您实际上不能这样做;该函数对数据进行了过多的处理,以至于表达式在绘图之前保持未计算状态。我可能会弄清楚这一点以允许表达式作为 data
参数对象的 names
,但是只允许用户传递他们想要的变量标签向量会更容易。
这是github开发版的now implemented,我会在下周初推送到CRAN。
此更改实现了一个新参数 labelValues
,它采用标签向量来标记顶轴。这可以是表达式向量。
下面是用法说明:
library("analogue")
set.seed(1)
df <- setNames(data.frame(matrix(rnorm(200 * 3), ncol = 3)),
c("d13C", "d15N", "d18O"))
df <- transform(df, Age = 1:200)
exprs <- expression(delta^{13}*C, # label for 1st variable
delta^{15}*N, # label for 2nd variable
delta^{18}*O) # label for 3rd variable
Stratiplot(Age ~ ., data = df, labelValues = exprs, varTypes = "absolute", type = "h")
产生
请注意,这只是第一步;我很确定我没有考虑 sort
和 svar
等的任何重新排序,如果它们被使用的话。