2017-01-26 7 views
0

바 plot의 레이블 정렬에 도움이 필요합니다.geom_text 위치 막대 모양의 가운데 부분

다음은 재현 코드 :

library(ggmap) 
library(ggplot2) 
library(gganimate) 
library(readxl) 
library(animation) 

mydf1<-structure(list(year = c(1994, 1995, 1997, 1997, 1998, 1998, 2000, 
2000, 2001, 2001, 2002, 2002, 2004, 2005, 2005, 2006, 2006, 2007, 
2007, 2008, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2015, 
2016, 2016, 2016, 2016), N = c(3L, 1L, 1L, 4L, 1L, 4L, 1L, 2L, 
1L, 5L, 1L, 2L, 1L, 1L, 4L, 1L, 3L, 1L, 2L, 1L, 5L, 2L, 2L, 6L, 
4L, 1L, 1L, 2L, 1L, 1L, 3L, 4L, 1L), channels = c(86, 24, 24, 
68, 6, 34, 22, 10, 14, 24, 16, 43, 4, 20, 56, 15, 20, 8, 11, 
24, 44, 9, 23, 65, 20, 12, 5, 43, 5, 4, 24, 53, 14), 
reliability = c(0.466666666666667, 
1, 0.2, 0.8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), type = c("OIL", "LNG", 
"AGS", "OIL", "LNG", "OIL", "LNG", "OIL", "LNG", "OIL", "LNG", 
"OIL", "OIL", "LNG", "OIL", "LNG", "OIL", "LNG", "OIL", "LNG", 
"OIL", "OIL", "OIL", "OIL", "OIL", "OIL", "LNG", "LNG", "OIL", 
"AGS", "LNG", "LNG*", "OIL")), .Names = c("year", "N", 
"channels", "reliability", "type"), row.names = c(NA, -33L), class = "data.frame") 

p3<-ggplot(data=mydf1, aes(x=year, y=channels, frame=year, cumulative=TRUE, fill=type))+ 
geom_bar(stat="identity")+labs(x="year", y="y")+ 
geom_text(aes(label=channels), vjust=1, color="white", size=3)+theme_minimal()+ 
ggtitle("Data here", "statistics") 
p3 

문제는 라벨의 위치에있다 - 그들이 대응하는 바가 일치하지 않습니다. 설명을 보려면 그림을 참조하십시오.

enter image description here

어떻게 대응하는 바의 중앙에 레이블을 추가하려면?

답변

3

최근 업데이트가 ggplot2 인 경우 position = position_stack(vjust = 0.5)geom_text()으로 설정하면됩니다.

geom_bar(stat = "identity")의 바로 가기로 geom_col()을 사용할 수 있습니다. 또한 labs에는 제목 및 부제 매개 변수가 있으므로 사용하지 않아도되고 ggtitle입니다.

ggplot(data = mydf1, aes(x = year, y = channels, fill = type, frame = year, cumulative = TRUE)) + 
    geom_col() + 
    labs(x = "year", y = "y", title = "Data Here", subtitle = "Statistics") + 
    geom_text(aes(label = channels), color = "white", size = 3, position = position_stack(vjust = 0.5)) + 
    theme_minimal() 

enter image description here