2016-07-25 6 views
0

Я хочу, чтобы включить математические символы в названиях панели для этого стратиграфического участка:использовать математические символы в названиях панели для стратиграфического участка

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 

enter image description here

Например, я хочу, чтобы этот текст на месте из "O.univ" и т.д .:

enter image description here

Я использовал этот код, чтобы сделать этот текст:

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")) 

Но если я пытаюсь обновить COLNAMES кадра данных, переданного 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 

enter image description here

Как я могу получить 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 

ответ

4

Вы действительно не можете сделать это в текущей версии аналог; функция делает слишком много возиться с данными, чтобы выражения оставались неоцененными до построения графика. Я мог бы, вероятно, понять это, чтобы выражения были как names объекта аргумента data, но проще просто разрешить пользователям передавать вектор меток, которые они хотят для переменных.

Это now implemented в версии для разработки пакета на github, и я нажму это на 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") 

который производит

enter image description here

Обратите внимание, что это только первый проход; Я уверен, что я не учитывал какое-либо переупорядочивание, которое происходит с sort и svar и т. Д., Если они используются.

+2

Всегда любите, когда добавляются дополнения, связанные с переполнением стека. – shayaa

1

Никогда не решетчатые участки, но я думал, что шанс узнать что-то должно быть стоит. Слишком долго, чтобы понять.

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) 

enter image description here

Надеется, что это поможет вам начать работу.

+0

что-то делать с 'par.strip.text' в аргументах' xyplot'? – shayaa

+0

Спасибо, что посмотрели. Мне не нужен текст в полосах, я хочу изменить текст над каждой панелью. Я не вижу, где в 'str (plt)' эти метки хранятся! – Ben

+0

Они определенно не там, они находятся в необязательных аргументах для вызова 'xyplot' в методе' Stratiplot' по умолчанию. Нашел, что он просматривает код в пакете, используя 'getAnywhere (« Stratiplot.default »)'. – shayaa

 Смежные вопросы

  • Нет связанных вопросов^_^