#r #ggplot2
#r #ggplot2
Вопрос:
Я пытаюсь изменить размер графика, созданного в рамках функции, но это не работает.
library(ggplot2)
library(ggrepel)
library(magrittr)
plot_exons <- function(exons_df, exon_start, exon_end) {
d = data.frame(
x1 = exon_start,
x2 = exon_end,
y1 = c(1.5, 1.5),
y2 = c(2, 2),
t = paste0('Exon ' , seq(1, nrow(exons_df))),
label = paste0('Exon ' , seq(1, nrow(exons_df)))
)
d %>%
ggplot2::ggplot()
scale_x_continuous(name = "(kbp)", scales::pretty_breaks(n = 8))
scale_y_continuous(name = "")
geom_hline(yintercept = 1.6,
size = 20,
alpha = 0.1)
geom_rect(
data = d,
mapping = aes(
xmin = x1,
xmax = x2,
ymin = 1.5,
ymax = 1.8,
label = label
),
color = "black",
fill = "#56B4E9"
)
ggrepel::geom_text_repel(
data = d,
aes(
x = x1 (x2 - x1) / 2,
y = 1.8,
label = label,
),
size = 10,
force_pull = 0,
# do not pull toward data points
nudge_y = 0.05,
direction = "x",
angle = 90,
vjust = 0,
segment.size = 0.2,
)
ylim(1.5, 2.2)
xlab("(kbp)")
ylab("")
theme_bw()
theme(
legend.position = "none",
panel.grid.major.y = element_blank(),
panel.grid.minor.y = element_blank(),
panel.grid.major.x = element_blank(),
panel.grid.minor.x = element_blank(),
axis.text.y = element_blank(),
axis.text.x = element_text(size = 30),
axis.ticks.length = unit(10, "pt"),
text = element_text(size = 30),
panel.border = element_blank()
)
}
start = c(1, 5, 8, 14, 19, 25)
end = c(3, 6, 12, 16, 22, 30)
label = c(1, 2, 3, 4, 5, 6)
regions = tibble::tibble(label, start, end)
plot_exons(regions, regions$start, regions$end)
#> Warning: Ignoring unknown aesthetics: label
#> Warning: Ignoring unknown parameters: force_pull
#> Scale for 'y' is already present. Adding another scale for 'y', which will
#> replace the existing scale.
Создано 2020-12-21 пакетом reprex (версия 0.3.0)
но я хочу изменить размер графика (высота = 15 см, ширина = 70 см) внутри функции. Итак, я попробовал
ggdraw()
draw_plot(p,x=0,y=0,width=70,height = 15)
а также добавление перед графиком
options(repr.plot.width = 70, repr.plot.height = 10)
но ничего не работало , кроме использования ggsave('fig.jpg', width = 70, height = 18, units = "cm" )
.
Как я могу создать тот же график (изменить размер графика внутри функции без сохранения графика), пожалуйста?
Комментарии:
1. Вы имеете
ggplot
в виду автоматическое изменение размера вашего окна построения графика?? cm не имеет смысла как единица измерения, если вы не сохраняете график. Я полагаюcowplot::draw_plot
, что он предназначен для второстепенных сюжетов, т. е. Если вы хотите, чтобы сюжет занимал меньше места, чем полное графическое устройство. Если вы хотите создать графическое устройство определенного размера, я думаю, вам нужно обратить внимание на такие вещи, как?x11
2. Спасибо @GregorThomas. Я пробовал и
dev.new(width = 80, height = 15)
то, иx11(width = 80, height = 15)
другое, но ничего из этого не сработало.