2016-07-25 31 views
0

mag ich mathematische Symbole in den Platte Titel für dieses stratigraphische Grundstück umfassen:Verwenden mathematische Symbole in der Panel-Titel für stratigraphisches Grundstück

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

Zum Beispiel möchte ich an Ort und Stelle, diesen Text haben von "o.Univ" etc .:

enter image description here

habe ich diesen Code, um diesen Text zu machen:

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

Aber wenn ich versuche, die COLNAMES des Datenrahmens zu Stratiplot weitergegeben zu aktualisieren, wird der Code nicht analysiert, und wir nicht bekommen, die richtige Textformatierung:

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

Wie kann ich Stratiplot erhalten, um die Ausdrücke in den Spaltennamen zu analysieren und sie im Plot korrekt zu formatieren?

Ich habe versucht der Suche durch str(plt) zu sehen, wo die Gruppentitel gespeichert sind, aber kein Erfolg:

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 

Antwort

4

Sie können dies tatsächlich nicht in der aktuellen Version analog; Die Funktion macht zu viele Daten mit den Daten, damit die Ausdrücke vor dem Plotten unbewertet bleiben. Ich könnte das wahrscheinlich herausfinden, um Ausdrücke wie das names des data Argumentobjekts zuzulassen, aber es ist einfacher, Benutzern einfach zu erlauben, einen Vektor von Etiketten zu übergeben, die sie für die Variablen wünschen.

Dies ist now implemented in der Entwicklungsversion des Pakets auf GitHub, und ich werde dies nächste Woche auf CRAN schieben.

Diese Änderung implementiert ein neues Argument labelValues, das einen Vektor von Beschriftungen zur Beschriftung der oberen Achse verwendet. Dies kann ein Vektor von Ausdrücken sein. Hier

ist eine Darstellung der Nutzung:

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

die

enter image description here

Hinweis erzeugt, dass dies nur ein erster Durchgang; Ich bin mir ziemlich sicher, dass ich keine Neuordnung berücksichtigt habe, die mit sort und svar usw. weitergeht, wenn sie verwendet werden.

+2

Immer lieben, wenn Feature-Ergänzungen aus einer Stapelüberlauf Frage getragen werden. – shayaa

1

nie Gitter Plots verwendet, aber ich dachte, eine Chance, etwas zu lernen, sollte sich lohnen. Nahm zu lange um es herauszufinden.

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

Hope this Sie begonnen wird.

+0

etwas mit 'par.strip.text' in den Argumenten zu' xyplot' zu tun? – shayaa

+0

Danke für einen Blick. Ich möchte keinen Text in den Streifen, ich möchte den Text über jedem Panel ändern. Ich kann nicht sehen, wo in 'str (plt)' diese Labels gespeichert sind! – Ben

+0

Sie sind definitiv nicht da, sie sind in den optionalen Argumenten für den Aufruf von 'xyplot' innerhalb der Standard 'Stratiplot' Methode. Habe es gefunden, indem ich den Code im Paket mit 'getAnywhere ("Stratiplot.default")' gelesen habe. – shayaa