Я использую R и ggplot, чтобы нарисовать диаграмму рассеяния некоторых данных, все в порядке, за исключением того, что числа на оси Y выходят с форматированием экспоненты в компьютерном стиле, то есть 4e + 05, 5e + 05 и т. Д. Это, очевидно, неприемлемо, поэтому я хочу, чтобы он отображал их как 500000, 400000 и так далее. Также было бы приемлемо получение правильного обозначения экспоненты.
Код для сюжета следующий:
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")
Любая помощь очень ценится.
ggplot
параметры по умолчанию как «явно неприемлемые». Вы имеете в виду, что у вас есть личные предпочтения в пользу другого формата. Число в формате4e+05
представляет собой научную запись и будет предпочтительным форматированием в самых разных приложениях.Ответы:
Другой вариант - отформатировать метки отметок оси запятыми с помощью пакета
scales
и добавитьв ваш оператор ggplot.
Если вы не хотите загружать пакет, используйте:
источник
Я также нашел другой способ сделать это, который дает правильную нотацию «x10 (надстрочный индекс) 5» на осях. Я размещаю его здесь в надежде, что он может быть кому-то полезен. Я получил код отсюда, поэтому я не претендую на это, он по праву принадлежит Брайану Диггсу.
Который затем можно использовать как
источник
format(...)
строкой:l <- gsub("0e\\+00","0",l)
gsub()
сразу послеformat()
, пока вы проверяете, чтоformat()
возвращается для вашего дела, в отдельной консоли.gsub
командой:# remove + after exponent, if exists. E.g.: (3x10^+2 -> 3x10^2)
l <- gsub("e\\+","e",l)
и после нее:# convert 1x10^ or 1.000x10^ -> 10^
l <- gsub("\\'1[\\.0]*\\'\\%\\*\\%", "", l)
чтобы сделать это в формате, обычно используемом в статьях.источник
library(scales)
и использовать,comma
который должен работать лучше, чем функция, которая у меня была раньше.Я опаздываю в игру, но на случай, если другим понадобится простое решение, я создал набор функций, которые можно вызывать, например:
которые дают вам удобочитаемые числа для осей x или y (или вообще любого числа).
Вы можете найти функции здесь: Github Repo Просто скопируйте функции в свой скрипт, чтобы вы могли их вызывать.
источник
Я считаю предложенный Джеком Эйдли ответ полезным.
Хотел выкинуть другой вариант. Предположим, у вас есть серия с большим количеством маленьких чисел, и вы хотите, чтобы метки осей записывали полную десятичную точку (например, 5e-05 -> 0,0005), затем:
источник
scale_y_continuous(labels=function(n){format(n, scientific = FALSE)})
почему нет такого предопределенного средства форматирования, черт его знает.