Подтвердить что ты не робот

Ggplot2 y ось метка десятичная точность

Я рисую несколько диаграмм ggplot в цикле (я знаю, я знаю, что не использует цикл plyr... но), и было любопытно, если бы был способ установить десятичную точность, чтобы сказать одну десятичную (то есть 0.0), Я использую следующее преобразование шкалы.

p <- p + scale_y_log10()

Любая помощь будет оценена.

4b9b3361

Ответ 1

У меня сложилось впечатление, что одно десятичное (то есть 1.2) значение по умолчанию, но если вы видите больше десятичных знаков, чем это, вы можете передать свое собственное форматирование в шкалу:

fmt_dcimals <- function(decimals=0){
   # return a function responpsible for formatting the 
   # axis labels with a given number of decimals 
   function(x) as.character(round(x,decimals))
}

Затем добавьте масштаб к вашему сюжету:

ggplot( ... ) + scale_y_log10(labels = fmt_dcimals(2))

Теперь, когда я думаю об этом, я должен добавить, что если вы действительно собираетесь писать свой собственный форматировщик, вам, вероятно, следует использовать функцию format для выполнения работы, а не округления и принуждения. Это, вероятно, безопаснее и "лучше".

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

fmt_dcimals <- function(decimals=0){
    function(x) format(x,nsmall = decimals,scientific = FALSE)
}

и вы можете продолжить игру с аргументами nsmall и digits до format, чтобы получить то, что вы хотите, я думаю. Пример использования:

df <- data.frame(x = 1:5,y = rexp(5))
ggplot(df,aes(x = x,y=y)) + 
    geom_point() + 
    scale_y_log10(labels = fmt_dcimals(2))

enter image description here