Писать X (то есть средние) в легенде и как предотвратить разрыв строки?


Добрый день!

Я не настолько знаком с R, поэтому я был бы рад получить небольшую помощь.

Предположим, что у меня есть следующий минимальный пример:

test <- c(10,20,40,80,80)
avg <- mean(test)
avg <- format(avg,digits=2)

plot(test, xlab="x", ylab="y", pch = 4)
legend("topleft", legend= c("Average: ", avg))

Я хотел бы написать x вместо "среднего" - интересно, возможно ли это событие, поскольку это не обычный символ-просто комбинация двух (буква плюс надпись).

Еще одна вещь, от которой я хотел бы избавиться, - это разрыв строки после слова "среднее" (см. стрелку на рисунке ниже):

Выход

1 4

1 ответ:

Здесь есть два вопроса. Во-первых, это обрабатывается с помощью ?plotmath в R. оператор, который вы ищете, является bar(). Это Не функция, а разметка, которую plotmath понимает.

Во-вторых, вам нужно выражение, в котором avg преобразуется в его значение. Вам нужно выражение, потому что это то, с чем работает plotmath. Существует несколько решений этой проблемы, но ниже я использую bquote(). Вы предоставляете ему выражение и все, что завернуто в .( ) будет преобразовано его значение путем оценки вещи внутри .( ).

Вот ваш код и соответствующим образом измененный вызов legend():

test <- c(10,20,40,80,80)
avg <- mean(test)
avg <- format(avg,digits=2)

plot(test, xlab="x", ylab="y", pch = 4)
legend("topleft", legend = bquote(bar(x)*":" ~ .(avg)))
Обратите внимание, что это вставит именно то, что есть в avg. Возможно, вам придется сделать
avg <- round(avg)

Или какое-то другое исправление форматирования, чтобы получить что-то приятное и презентабельное.