Изобразите положительный символ бесконечности и отрицательный символ бесконечности.


Мне было интересно, как я могу построить положительный знак бесконечности и - знак бесконечности в графике?

Вот мой код R (без успеха):

plot(1, ty ='n', ann = F, xlim = c(-4, 6), ylim = c(-3.5, 1.5) )

text(c(-4, 6 ), rep(1, 2), c( bquote(- infinity  ), bquote(infinity  ) ) ) 
2 3

2 ответа:

Попробуйте:

text(c(-4, 6 ), rep(1, 2), c( bquote("- \U221E"), bquote("\U221E") ) ) 

?plotmath старты

Если аргумент text для одной из функций рисования текста (text, mtext, axis, legend) в R есть выражение , аргумент равен интерпретируется как математическое выражение и вывод будет отформатирован в соответствии с Текс-подобными правилами.

И labels параметр text задокументирован как

Вектор символов иливыражение , задающеетекст , который будет записан. Один попытка сделана принуждать другие языковые объекты (имена и вызовы) к выражения, векторы и другие классифицируемые объекты для обозначения векторов as.character.

(Курсив мой). bquote фактически возвращает не выражение (класс R, а не понятие), а объект языка (в частности, вызов). Это вызывает две проблемы:

  • поскольку R не может обрабатывать вектор вызовов, c фактически не создает вектор, а вместо этого приводит результат к списку, аналогичному тому, как c(sum, mean) принужден к списку, и
  • В то время как text принудит вызов, возвращенный из самого bquote, к выражению (которое будет правильно проанализировано), он принудит список к символьному вектору, который не интерпретируется в соответствии с plotmath.

Вы можете принудительно вызвать список вызовов, произведенных с помощью c и bquote явно с помощью as.expression, но быстрее просто вызвать expression напрямую и полностью избежать bquote:

plot(1, ty ='n', ann = F, xlim = c(-4, 6), ylim = c(-3.5, 1.5))

text(c(-4, 6 ), rep(1, 2), expression(-infinity, infinity)) 

сюжет с символами бесконечности

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