Я пытаюсь переопределить текст в некоторых полосах ggplot для слияния греческих символов. Вот некоторые демонстрационные данные и основа для графика.
dfr <- data.frame(
x = rep(1:10, times = 6),
y = runif(60),
fx = rep(c("foo", "bar"), each = 30),
fy = rep(c("alpha", "beta", "gamma"), each = 10, times = 2)
)
p <- ggplot(dfr, aes(x, y)) + geom_point()
Моя первая попытка графика не имеет никакого грека в маркировках полосы.
p + facet_grid(fy ~ fx)
Я заключаю, что я, как предполагается, добавляю аргумент маркировочной машины facet_grid
переопределять текст. Я предположил, что это должно выложить выражение для обработки греческих символов, но мой код просто бросает ошибку, когда диаграмма печатается.
lbl <- function(variable, value)
{
if(variable == "fy") parse(text=as.character(value)) else value
}
p + facet_grid(fy ~ fx, labeller = lbl)
Error in aperm(X, c(s.call, s.ans)) :
unimplemented type 'expression' in 'aperm'
Как я должен создавать маркировки полосы?
Попробуйте следующее:
p + facet_grid(fy ~ fx, labeller = label_parsed)
публикует это здесь, поскольку оно связано с:
Если вы хотите, чтобы имя самой переменной, а также уровни / значения переменной оценивались как выражение (т. Е. Отображались, как если бы они были латексными), попробуйте следующее:
label_parseall <- function(variable, value) {
plyr::llply(value, function(x) parse(text = paste(variable,
x, sep = "==")))
}
Пример:
data <- data.frame(x = runif(10), y = runif(10),
gamma = sample(c("gamma[0]", "gamma[1]"), 10, rep = T))
ggplot(data, aes(x, y)) + geom_point() + facet_grid(~gamma,
labeller = label_parselabel)
image на http://img709.imageshack.us/img709/1168/parseall.png