Показывать метку галочки вне области графика в ggplot? - PullRequest
0 голосов
/ 27 апреля 2020

Я использую ggplot для создания многопанельного графика со значениями, заполненными областью. Я хочу отрезать график точно при максимальном значении х (год) и пометить этот год. Когда я указываю точные значения, он не выводит окончательное значение (результат, когда значения 2001, 2005 и 2010 установлены как breaks, показан слева). Я также хочу указать, какие значения отметок установлены (значение по умолчанию не имеет смысла, см. Распечатку справа в качестве примера), и я установил метки отметок оси, чтобы включить последнее значение на оси x, но он не печатается полностью (обрезается по краю участка сюжета). Как я могу заставить ggplot показывать последнее значение, как я установил его по перерывам? Приведенный ниже код для фиктивного примера показан здесь.

РЕДАКТИРОВАТЬ: исправлены разрывы до 2001, 2005, 2010 в коде (не 2100).

enter image description here

set<-data.frame(year=c(2001:2010), values=c(1:10))
g1<-ggplot(set, aes(x=year,y=values))+
      geom_area(data=set)+
      theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
            panel.background = element_blank(), 
            axis.line = element_line(colour = "black"))+
      scale_x_continuous(expand=c(0, 0), breaks=c(2001, 2005, 2010)) + #label at 25-year intervals
      scale_y_continuous(expand = c(0, 0))


g2<-ggplot(set, aes(x=year,y=values))+
  geom_area(data=set)+
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        panel.background = element_blank(), 
        axis.line = element_line(colour = "black"))+
  scale_x_continuous(expand=c(0, 0)) + #label at 25-year intervals
  scale_y_continuous(expand = c(0, 0))

ggarrange(g1, g2, nrow=1, ncol=2)

1 Ответ

1 голос
/ 27 апреля 2020

Благодаря предложению @ Tjebo ... внутренняя проблема заключается в аргументе breaks, содержащем опечатку :). Должно работать нормально, используя 2010 вместо 2100. К сожалению!

Однако использование expand=c(0,0) приводит к обрезанию меток на осях в результате обрезания меток за пределами границ. Исправление для этого? Просто расширьте «границы». Здесь вы должны использовать theme(plot.margin=..., чтобы набрать sh поля немного. Некоторая информация может быть найдена здесь, чтобы помочь вам , но на самом деле просто поиграйтесь с полями, отметив, что формат обычно theme(plot.margin = margin(t, r, b, l, unit))

Где: t, r, b и l представлять «сверху», «справа», «снизу» и «слева» соответственно, а единица измерения может состоять из нескольких вещей (здесь я предложил «точки»). С учетом вышесказанного я обнаружил, что это работает для вашего примера для сюжета слева:

theme(plot.margin = margin(10,15,10,10, "points")
...