Я хотел бы разделить заголовок на две части, которые выровнены по левому / правому краю соответственно. Следующий код создает два текстовых блока и использует arrangeGrob()
для упорядочивания графика. Но похоже, что в arrangeGrob()
нет параметров для выравнивания гробов. Как я могу выровнять grobs1
слева от графика, а и grobs2
справа от графика? Спасибо.
p <- ggplot()
grobs1 <- grobTree(
gp = gpar(fontsize = 14),
textGrob(label = "Left", name = "title1",
x = unit(2.5, "lines"), y = unit(0, "lines"),
hjust = 0, vjust = 0),
textGrob(label = " left", name = "title2",
x = grobWidth("title1") + unit(2.5, "lines"), y = unit(0, "lines"),
hjust = 0, vjust = 0, gp = gpar(col = "red", fontface = "bold"))
)
grobs2 <- grobTree(
gp = gpar(fontsize = 14),
textGrob(label = "Right", name = "title1",
x = unit(0, "lines"),
y = unit(0, "lines"),
hjust = 0, vjust = 0),
textGrob(label = " right", name = "title2",
x = grobWidth("title1") +unit(0, "lines"),
y = unit(0, "lines"),
hjust = 0, vjust = 0, gp = gpar(col = "red", fontface = "bold"))
)
gg <- arrangeGrob(p, top = arrangeGrob(grobs1, grobs2, ncol = 2), padding = unit(1, "line"))
grid.newpage()
grid.draw(gg)
1 ответ
Два аргумента функции textGrob
могут быть полезны для перемещения текста по горизонтали: just
и hjust
. Вы можете попытаться отрегулировать эти значения, чтобы получить то, что вам нужно. Кстати, я предполагаю, что вы использовали пакет gridExtra
. Я внес только некоторые изменения в just
и hjust
вашего исходного кода. Я мог зайти слишком далеко, чтобы сдвинуть текст right
вправо с помощью hjust = -5
, и just = "right"
может быть достаточно.
library(gridExtra)
library(grid)
library(ggplot2)
p <- ggplot()
grobs1 <- grobTree(
gp = gpar(fontsize = 14),
textGrob(label = "Left", name = "title1",
x = unit(2.5, "lines"), y = unit(0, "lines"),
just = "left", hjust = 0, vjust = 0),
textGrob(label = " left", name = "title2",
x = grobWidth("title1") + unit(2.5, "lines"), y = unit(0, "lines"),
just = "left", hjust = 0, vjust = 0, gp = gpar(col = "red", fontface = "bold"))
)
grobs2 <- grobTree(
gp = gpar(fontsize = 14),
textGrob(label = "Right", name = "title1",
x = unit(0, "lines"),
y = unit(0, "lines"),
just = "right",
hjust = -5,
vjust = 0),
textGrob(label = " right", name = "title2",
x = grobWidth("title1") +unit(0, "lines"),
y = unit(0, "lines"),
just = "right",
hjust = -5,
vjust = 0, gp = gpar(col = "red", fontface = "bold"))
)
gg <- arrangeGrob(p, top = arrangeGrob(grobs1, grobs2, ncol = 2), padding = unit(1, "line"))
grid.newpage()
grid.draw(gg)
Похожие вопросы
Новые вопросы
r
R - это бесплатный язык программирования с открытым исходным кодом и программная среда для статистических вычислений, биоинформатики, визуализации и общих вычислений. Пожалуйста, предоставьте минимальные и воспроизводимые примеры вместе с желаемым результатом. Используйте dput () для данных и укажите все небазовые пакеты с вызовами library (). Не вставляйте изображения для данных или кода, вместо этого используйте блоки кода с отступом. По вопросам, связанным со статистикой, используйте https://stats.stackexchange.com.