Как я могу использовать переменную внутри выражения (), чтобы сделать метку оси Y гистограммы в R? - PullRequest
0 голосов
/ 30 января 2019

Я хочу сделать гистограмму с меткой оси Y, содержащей несколько единиц.Я использовал expression () для их правильного форматирования.Если это закодировано непосредственно в сценарии, все работает правильно.Если я хочу использовать переменную вместо того, чтобы включить автоматизацию, метка отображается неправильно.Есть ли способ использовать переменную вместе с expression () внутри или снаружи barplot ()?

Чтобы автоматизировать скрипт, я перебираю несколько текстовых файлов и создаю множество графиков за один раз.Чтобы получить метки оси Y, скрипт считывает второй текстовый файл, содержащий информацию.Конечно, он не отформатирован как следует.Поэтому мне все еще нужно использовать выражение ().Следовательно, фактический текст метки оси Y (или его часть) сохраняется в переменной, но если я заменю соответствующий фрагмент кода на переменную, он не будет отображать правильную метку на графике.

# 1) this works properly but i actually don't want to use it

    labelY <- expression(paste("Mn content [", µg,"*",mg^{-1},"DW]"))    

# 2) i want to replace "Mn content" by something else (e.g. "Fe
# content") with a variable 'varLabel' but it does not work

    labelY <- expression(paste(varLabel," [", µg,"*",mg^{-1},"DW]")) 

# 3) i tried to replace the whole label with a variable but this
# doesn't work either

    labelY <- expression(varLabel) 

# plot the graph ('dataplot' contains the actual data)

    daMightyPlot = barplot(dataplot, beside=T, legend.text=T,
        col=barColors, ylim=c(0,lim), ylab = labelY, names.arg=namesArg,
        cex.axis=1.0, cex.names = 1.0, font.lab = 1, cex.lab = 1.2
    )

Как указано выше, ручное определение метки оси Y работает правильно.Тем не менее, когда я хочу использовать переменную для замены части строки (случай 2), в качестве метки оси y отображается что-то еще:

$ (переменная) [µg * mg ^-1 DW]

Таким образом, он не хочет отображать содержимое переменной, а показывает только имя переменной.Например, я хочу:

Содержание Mn [мкг * мг ^ -1 DW]

... если «Mn content» хранится в переменной.Результат аналогичен, когда я заменяю все выражение внутри выражения () на переменную (случай 3).

У кого-нибудь есть решение?Чего мне не хватает?

1 Ответ

0 голосов
/ 30 января 2019

Использование bquote:

labelY <- expression(paste("Mn content [", µg,"*",mg^{-1},"DW]"))  
plot.new()
text(0.5, 0.3, labelY)

varLabel <- "Fe content"
labelY <- bquote(paste(.(varLabel)," [", µg,"*",mg^{-1},"DW]")) 
text(0.5, 0.6, labelY)

Результат:

resulting plot

...