2016-05-19 3 views
3

Я вычисляю разницу между годами и базовым годом. Я хотел бы использовать результат как значения x в сюжете. Но как я могу напечатать знак + с положительными числами (-2, -1, 0, +1, +2)?Печать положительных чисел с знаком плюса

dat <- data.frame(year = c(2000, 2001, 2002, 2003, 2004), ref = rep(2002)) 
dat$diff <- dat$year - dat$ref 

ggplot(dat, aes(x = diff)) 

ответ

4

Вы могли бы сделать

library(ggplot2) 
dat <- data.frame(year = c(2000, 2001, 2002, 2003, 2004), ref = rep(2002)) 
dat$diff <- dat$year - dat$ref 
ggplot(dat, aes(x = diff)) + 
    scale_x_continuous(labels = function(x) sprintf("%+d", x)) 
+0

Это идеальный вариант, только одна незначительная деталь: возможно ли печатать + только для положительных чисел, но не для 0? – beetroot

+1

Я не знаю, возможно ли это с помощью 'sprintf' (check'? Sprintf'), однако 'scale_x_continuous (label = function (x) ifelse (x> 0, paste0 (" + ", x), x))' должно сработать. – lukeA

2

Это также может быть достигнуто с неясной symnum функции и испытанным paste0. Здесь 0 не добавляет к нему «+».

ggplot(dat, aes(x = diff)) + 
    scale_x_continuous(labels = function(x) paste0(symnum(x, c(-Inf, 0, Inf), c("", "+")), x)) 
Смежные вопросы