Как правильно выровнять и добавить по правому краю метки по оси Y с помощью sprintf в функции ggplot? - PullRequest
0 голосов
/ 15 января 2019

У меня есть 3 графика, где я хотел бы добавить свои метки по оси Y. Я наткнулся на этот пост и взял функцию для заполнения оси Y, чтобы длина меток на всех 3 графиках была одинаковой длины 60 (или любое число больше 55) символов. Но я не уверен, правильно ли я его использую даже после прочтения документации по функции sprintf. Функция sprintf, которую я использовал и настраивал: sprintf('%60s', mean_name). Когда я пытаюсь поэкспериментировать с ним и выровнять его по левому краю, чтобы увидеть, есть ли какие-либо проблемы с пробелами, это получается очень прикольным - посмотрите на картинку внизу (отредактированные данные). Если я поставлю минус перед 60, разве это не дополнит строку в конце?

Вот мой код из 3 графиков.

pq1_plop <-  ggplot(pq1_agged, aes(y=mean_name, x=mean_2018)) + 
  geom_vline(xintercept = 3, size = 0.5, color = "#00C4F3") + #Benchmark static line
  geom_text(data=data.frame(x=3,y=5), aes(x, y), label="Benchmark", hjust=1, vjust=-.2, colour="#4c4c4c") +
  geom_point(aes(x = SY_mean), color="#FD5B14", fill="#FD5B14", size=4, pch=3) + 
  geom_point(aes(x = PSELI_mean), color="#2B85BA", fill="#2B85BA", size=4, pch=3) +
  geom_point(aes(x = mean_2017), color="#BCA8DC", fill="#BCA8DC", size=4, pch=16) + 
  geom_point(color="#612CB5", fill="#612CB5", size=4, pch=16) + 
  #guides(colour = "colorbar", size = "legend", shape = "legend") + 
  xlim(1, 4) +
  ylab("Program Organization \n & Structure") + 
  scale_y_discrete(labels = function(mean_name) sprintf('%-60s', mean_name)) + 
  theme_bw() + 
  theme(
        axis.title.x =element_blank(),
        axis.text.x = element_blank(),
        axis.ticks.x = element_blank(),
        axis.text.y = element_text(debug=TRUE), 
    axis.title.y = element_text(angle = 0, vjust = 0.5, margin=margin(0), size=10),
        panel.grid.minor.x = element_line(colour = "#cccccc",
                                          linetype = "solid"),
        panel.grid.major.x = element_line(colour = "#b2b2b2",
                                          linetype = "solid"),
        panel.grid.major.y = element_line(colour = "#7f7f7f",
                                          linetype = "solid"),
        panel.border = element_blank()
  )

#plot(pq1_plop) 

pq2_plop <-  ggplot(pq2_agged, aes(y=mean_name, x=mean_2018)) + 
  geom_vline(xintercept = 3, size = 0.5, color = "#00C4F3") + #Benchmark static line
  geom_point(aes(x = SY_mean), color="#FD5B14", fill="#FD5B14", size=4, pch=3) + 
  geom_point(aes(x = PSELI_mean), color="#2B85BA", fill="#2B85BA", size=4, pch=3) +
  geom_point(aes(x = mean_2017), color="#BCA8DC", fill="#BCA8DC", size=4, pch=16) +
  geom_point(color="#612CB5", fill="#612CB5", size=4, pch=16) +  
  xlim(1, 4) +
  ylab("Supportive Environment") + 
  scale_y_discrete(labels = function(mean_name) sprintf('%60s', mean_name)) +
  theme_bw() + 
  theme(
        axis.title.x = element_blank(),
        axis.text.x = element_blank(),
        axis.ticks.x = element_blank(),
        axis.line.x  = element_blank(),
        axis.title.y = element_text(angle = 0, vjust = 0.5, margin=margin(-5)),
        panel.grid.minor.x = element_line(colour = "#cccccc",
                                          linetype = "solid"),
        panel.grid.major.x = element_line(colour = "#b2b2b2",
                                          linetype = "solid"),
        panel.grid.major.y = element_line(colour = "#7f7f7f",
                                          linetype = "solid"),
        panel.border = element_blank()
  )

#plot(pq2_plop)

pq3_plop <-  ggplot(data = pq3_agged, aes(y=mean_name, x=mean_2018,fill='lightgreen')) + 
  geom_vline(xintercept = 3, size = 0.5, color = "#00C4F3") + #Benchmark static line
  geom_point(aes(x = SY_mean), color="#FD5B14", fill="#FD5B14", size=4, pch=3) + 
  geom_point(aes(x = PSELI_mean), color="#2B85BA", fill="#2B85BA", size=4, pch=3) +
  geom_point(aes(x = mean_2017), color="#BCA8DC", fill="#BCA8DC", size=4, pch=16) +
  geom_point(color="#612CB5", fill="#612CB5", size=4, pch=16) + 
  xlim(1, 4) +
  ylab("Engagement in Activities \n and Learning") + 
  scale_fill_identity(name = 'the fill', guide = 'legend', labels = c('m1')) +
  scale_colour_manual(name = 'the colour', 
                      values =c('black'='black','red'='red'), 
                      labels = c('c2','c1')) + 
  #scale_y_discrete(labels = function(mean_2018) str_wrap(mean_2018, width = 60)) + 
  scale_y_discrete(labels = function(mean_name) sprintf('%-60s', mean_name)) +
  theme_bw() + 
  theme(
        axis.title.x = element_blank(),
        #axis.line.x = element_blank(),
        axis.text.x = element_text(size = 8), 
        axis.text.y = element_text(margin=margin(0), debug=TRUE), 
    axis.title.y = element_text(angle = 0, vjust = 0.5, margin=margin(0), size=10),  
        panel.grid.minor.x = element_line(colour = "#cccccc",
                                          linetype = "solid"),
        panel.grid.major.x = element_line(colour = "#b2b2b2",
                                          linetype = "solid"),
        panel.grid.major.y = element_line(colour = "#7f7f7f",
                                          linetype = "solid"),
        panel.border = element_blank()
  )

Фото:

enter image description here

...