2016-08-08 3 views
1

У меня есть dataframe, который выглядит как это:Как изменить отрицательные оси x (метки) графа ggplot2 на положительные?

df <- structure(list(gender = c("male", "male", "male", "female", "female", 
"female", "male", "male", "male", "male", "male", "female", "female", 
"female"), agegroup = c("-24", "25-34", "45-54", "-24", "25-34", 
"35-44", "-24", "25-34", "35-44", "65-", "unknown", "-24", "25-34", 
"35-44"), N = c(-2, -4, -1, 3, 4, 1, -3, -14, -1, -1, -2, 3, 
3, 1), N2 = c(2, 4, 1, 3, 4, 1, 3, 14, 1, 1, 2, 3, 3, 1), location = c("here", 
"here", "here", "here", "here", "here", "there", "there", "there", 
"there", "there", "there", "there", "there")), .Names = c("gender", 
"agegroup", "N", "N2", "location"), row.names = c(NA, 14L), class = "data.frame") 

мне нужно, чтобы сделать некоторые из N-й в негативы, потому что я хотел сделать «пирамиду». Например:

ggplot(biofile2, aes(x = agegroup, y = N , fill = gender),color=gender) + 
geom_bar(stat="identity", size=.3, position="identity")+ 
facet_wrap(~ location,ncol=2)+ 
coord_flip() 

Похоже, я намеревался. Осталось только изменить -10 и -5 на положительные. Есть ли способ сделать это, не изменяя внешний вид сюжета?

+0

@Axeman спасибо! Есть ли способ изменить этикетки программно, если заранее не известно, какие метки будут? – rdatasculptor

+1

@Axeman, Если вы добавите это в качестве ответа, я соглашусь с ним. Еще раз спасибо! – rdatasculptor

ответ

0

Кажется, что вы хотите просто сделать все метки осей положительными, т. Е. Принять абсолютное значение. Мы можем сделать это, используя scale_*_continuous с аргументами breaks и labels. Заметим, что в этом случае нам нужно преобразовать ось y, так как мы должны обратиться к оси доcoord_flip. pretty функция может быть использована, чтобы удобно произвести некоторые довольно разрывы осей:

Добавить свой участок:

scale_y_continuous(breaks = pretty(df$N), labels = abs(pretty(df$N)) 
Смежные вопросы