Как изменить форматирование чисел на оси с помощью ggplot?

Я использую R и ggplot, чтобы нарисовать диаграмму рассеяния некоторых данных, все в порядке, за исключением того, что числа на оси y выходят с форматированием экспоненциального стиля компьютера, то есть 4e + 05, 5e + 05 и т. Д. Это, очевидно, неприемлемо, поэтому я хочу, чтобы он отображал их как 500 000, 400 000 и так далее. Прием правильной нотации экспоненты также будет приемлемым.

Код для графика выглядит следующим образом:

p <- ggplot(valids, aes(x=Test, y=Values)) + geom_point(position="jitter") + facet_grid(. ~ Facet) + scale_y_continuous(name="Fluorescent intensity/arbitrary units") + scale_x_discrete(name="Test repeat") + stat_summary(fun.ymin=median, fun.ymax=median, fun.y=median, geom="crossbar") 

Любая помощь очень ценится.

5 Solutions collect form web for “Как изменить форматирование чисел на оси с помощью ggplot?”

Другим вариантом является форматирование метки метки тика с помощью запятых с использованием scales пакетов и добавление

  scale_y_continuous(name="Fluorescent intensity/arbitrary units", labels = comma) 

к вашему заявлению ggplot.

Если вы не хотите загружать пакет, используйте:

 scale_y_continuous(name="Fluorescent intensity/arbitrary units", labels = scales::comma) 

Я также нашел другой способ сделать это, что дает правильную ‘x10 (надстрочный) 5’ обозначение на осях. Я размещаю его здесь в надежде, что это может быть полезно для некоторых. Я получил код отсюда, поэтому не претендую на это, это справедливо касается Брайана Диггса.

 fancy_scientific < - function(l) { # turn in to character string in scientific notation l <- format(l, scientific = TRUE) # quote the part before the exponent to keep all the digits l <- gsub("^(.*)e", "'\\1'e", l) # turn the 'e+' into plotmath format l <- gsub("e", "%*%10^", l) # return this as an expression parse(text=l) } 

Затем вы можете использовать как

 ggplot(data=df, aes(x=x, y=y)) + geom_point() + scale_y_continuous(labels=fancy_scientific) 
 x < - rnorm(10) * 100000 y <- seq(0, 1, length = 10) p <- qplot(x, y) library(scales) p + scale_x_continuous(labels = comma) 

Я опаздываю к игре здесь, но в случае, если другие хотят легкого решения, я создал набор функций, которые можно назвать:

  ggplot + scale_x_continuous(labels = human_gbp) 

которые дают вам читаемые человеком числа для осей x или y (или вообще любое число).

Вы можете найти здесь функции: Github Repo Просто скопируйте функции в свой скрипт, чтобы вы могли их назвать.

Я нашел полезный ответ Джека Эйдли.

Я хотел выбросить еще один вариант. Предположим, у вас есть серия со многими маленькими числами, и вы хотите, чтобы метки оси записывали полную десятичную точку (например, 5e-05 -> 0.0005), затем:

 NotFancy < - function(l) { l <- format(l, scientific = FALSE) parse(text=l) } ggplot(data = data.frame(x = 1:100, y = seq(from=0.00005,to = 0.0000000000001,length.out=100) + runif(n=100,-0.0000005,0.0000005)), aes(x=x, y=y)) + geom_point() + scale_y_continuous(labels=NotFancy) 
  • Обозначения осевых меток форматирования на грань в ggplot / R
  • Разделение кадра данных переменной
  • Как подмножить матрицу в один столбец, сохранить тип данных матрицы, поддерживать имена строк / столбцов?
  • Как использовать функцию эллипсиса R при написании собственной функции?
  • Кадр данных подмножества, основанный на количестве строк на группу
  • data.table join, затем добавьте столбцы в существующий файл data.frame без повторной копии
  • Гистограмма Overlay с кривой плотности
  • Как сгладить список в список без принуждения?
  • Как поместить метки над geom_bar в R с помощью ggplot2
  • Передайте имя столбца data.frame в функцию
  • Преобразование матрицы в одномерный массив
  • Давайте будем гением компьютера.