Площадь участка и метки данных

У меня есть диаграмма, где метки находятся за пределами области графика. Я хотел бы уменьшить площадь сюжета и позволить ярлыкам располагаться за его пределами. Вот код, генерирующий график - вы можете видеть, что мне удалось изменить ось Y, чтобы заставить это работать, но есть некоторое "пустое" серое пространство.

require(ggplot2)
require(scales)

ggplot(data=df.long[as.character(df.long$locale) %in% "SPOKANE",],
          aes(x=Time, y=RR, colour=locale, group=locale, label=RR))+
  scale_y_continuous(breaks=seq(0, 100, 10))+
  labs(y="Response Rate")+
  coord_cartesian(ylim=c(0, 105))+
  geom_text(vjust=-1, size=4, angle=0, colour="black")+
  ggtitle(paste("i","Response Rates"))+
  theme(plot.title=element_text(size=18, face="bold", vjust=1),
        axis.title=element_text(size=16),
        axis.text.x=element_text(size=10, angle=90),
        legend.position="none",
        panel.background = element_rect(linetype=0),
        panel.grid.major=element_line(linetype=0),
        panel.grid.minor=element_line(linetype=0))+  
  scale_x_date(labels = date_format("%b-%y"), breaks=date_breaks("month"))+
  geom_line(size=.8)+
  facet_grid(~Year, scales="free_x", space="free_x") 

В то же время я столкнулся с сюжетом, потому что хотел сделать более четкое разделение между годами. В PowerPoint я бы делал многослойные оси, но GGPlot этого не делает. Ниже картина того, что я имею в виду под "слоистой осью". Обратите внимание, как месяцы выше лет и так далее.

У кого-нибудь есть идеи, как почистить этикетки и сделать фон прозрачным?

Вот данные, чтобы сделать его воспроизводимым:

df.long <- structure(list(Time = structure(c(15614, 15645, 15675, 15706, 
15737, 15765, 15796, 15826, 15857, 15887, 15918, 15949, 15979, 
16010, 16040, 16071, 16102, 16130, 16161, 16191, 16222, 16252, 
16283, 16314, 16344, 16375, 16405), class = "Date"), Year = c("2012", 
"2012", "2012", "2013", "2013", "2013", "2013", "2013", "2013", 
"2013", "2013", "2013", "2013", "2013", "2013", "2014", "2014", 
"2014", "2014", "2014", "2014", "2014", "2014", "2014", "2014", 
"2014", "2014"), locale = structure(c(31L, 31L, 31L, 31L, 31L, 
31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 
31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L), .Label = c("BALTIMORE", 
"BECKLEY", "FORT.DIX", "FORT.LEE", "HARRISBURG", "PITTSBURGH", 
"PITTSBURGH.1", "CHICAGO", "CLEVELAND", "COLUMBUS", "DES.MOINES", 
"DETROIT", "INDIANAPOLIS", "LANSING", "MILWAUKEE", "MINNEAPOLIS", 
"ALBANY", "BOSTON", "BUFFALO", "NEW.YORK", "PORTLAND..ME", "SPRINGFIELD", 
"SYRACUSE", "ANCHORAGE", "BOISE", "BUTTE", "FARGO", "PORTLAND..OR", 
"SEATTLE", "SIOUX.FALLS", "SPOKANE", "DENVER", "HONOLULU", "LOS.ANGELES", 
"PHOENIX", "SACRAMENTO", "SALT.LAKE.CITY", "SAN.DIEGO", "SAN.JOSE", 
"ATLANTA", "CHARLOTTE", "FORT.JACKSON", "JACKSON", "JACKSONVILLE", 
"KNOXVILLE", "LOUISVILLE", "MEMPHIS", "MIAMI", "MONTGOMERY", 
"NASHVILLE", "RALEIGH", "TAMPA", "ALBUQUERQUE", "AMARILLO", "DALLAS", 
"EL.PASO", "HOUSTON", "KANSAS.CITY", "LITTLE.ROCK", "NEW.ORLEANS", 
"OKLAHOMA.CITY", "OMAHA", "SAN.ANTONIO", "SHREVEPORT", "ST..LOUIS"
), class = "factor"), RR = c(100, 100, 100, 73, 100, 69, 100, 
86, 93, 95, 91, 41, 97, 94, 93, 95, 96, 52, 89, 83, 72, 69, 81, 
100, 93, 88, 78)), .Names = c("Time", "Year", "locale", "RR"), row.names = 811:837, class = "data.frame")

Кроме того, обратите внимание, как надписи на правой стороне фасета FIRST сжимаются и исчезают - должно быть 100, но они хрустят. Как мне это исправить?

1 ответ

Видимо, используя grid Пакет позволит нам отключить этот тип отсечения.

Поэтому я рисую график и сохраняю его в объекте под названием p а потом:

  gt <- ggplot_gtable(ggplot_build(p)) #Takes existing plot and stores into a gtable (programmable structure)
  gt$layout$clip[gt$layout$name == "panel"] <- "off" #Disables clipping
  grid.arrange(gt)

И это отключает отсечение! К сожалению, я не могу заставить работать многослойные оси.

Другие вопросы по тегам