我想在这个地层图的面板标题中包含数学符号:
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
例如,我希望用这个文字代替&#34; O.univ&#34;等:
我使用此代码制作该文字:
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
解析组合名中的表达式并在图中正确格式化?
我已尝试浏览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
答案 0 :(得分:4)
您无法在当前版本的模拟中实际执行此操作;在绘图之前,表达式保持未评估的数据太多了。我可能想出这一点,允许表达式作为names
参数对象的data
,但更容易让用户传递他们想要的变量标签向量。
这是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
等,我仍然无法解决任何重新排序问题。
答案 1 :(得分:1)