Я хочу, чтобы моя ось X показывала шкалу с добавленным «m2» в конце текста каждой оси с помощью функции scales::label_number(). Воспроизводимый код:
tibble(x = 1:10, y = 1:10) |>
ggplot(aes(x, y)) +
scale_x_continuous(label = scales::label_number(suffix = "m^2"))
что дает мне «5 м ^ 2» (например) по оси x, тогда как я хочу, чтобы он показывал «5 м 2». Кажется, обычные подозреваемые в bquote() и expression() не работают с функцией scales::label_number().





Используя scales::label_parse, вы можете сделать:
library(ggplot2)
data.frame(x = 1:10, y = 1:10) |>
ggplot(aes(x, y)) +
scale_x_continuous(
label = ~ scales::label_parse()(
paste0(scales::label_number()(.x), "*m^2"))
)

@ Фредди Дж. Хизер. Код не подводит. label_number использует пробел в качестве знака группировки. И как вы хотели label_number... (;
Используйте Юникод для ^2: "m\u00B2" или m^2: "\u33A1"
library(tibble)
library(ggplot2)
tibble(x = 1:10, y = 1:10) |>
ggplot(aes(x, y)) +
scale_x_continuous(label = scales::label_number(suffix = "m\u00B2"))

Created on 2022-05-16 by the reprex package (v2.0.1)
Я не знал, что ^2 был частью юникода :) Спасибо.
Большое спасибо! Приведенный выше код не работает, когда значения по оси x превышают 1000. Это связано с тем, что
label_number()помещает пробел между «1» и «000». Я обнаружил, что заменаpaste0(scales::label_number()(.x), "*m^2")наpaste0(.x, "*m^2")решает эту проблему.