Я хотел бы легко объединить 3 участка. Моя проблема в том, что графики немного сдвинуты, и даже если я рисую их без границ, они не сливаются плавно между графиками 1 и 2 / графиком 2 и 3.
library(tidyverse)
library(gridExtra)
plot1 <- ggplot(df) +
theme_dark() +
geom_line(aes(y = Price, x = time, color = "#00FFFF"), size = 0.7) +
geom_area(aes(y = Price, x = time), fill = "#00FFFF", alpha = .1) +
theme(axis.title.x=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
legend.position = c(.1, .95),
legend.justification = c("right", "top"),
legend.box.just = "right",
legend.margin = margin(3, 3, 3, 3),
plot.margin = margin(0,-0.5,-0.5,-0.5),
plot.background = element_rect(fill = "#808080")) +
scale_colour_manual(name = "Price",
values = c("#00FFFF" = "#00FFFF"), labels = c("Stock")) +
labs(y = "")
#
plot1
#
plot2 <- ggplot(df) +
theme_dark() +
geom_bar(aes(x = time, y = B, fill = "green"), stat = "identity") +
geom_bar(aes(x = time, y = S, fill = "red"), stat = "identity") +
theme(axis.title.x=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
panel.border = element_blank(),
legend.position = c(.1, .95),
legend.justification = c("right", "top"),
legend.box.just = "right",
legend.margin = margin(3, 3, 3, 3),
plot.margin = margin(-0.75,-0.5,0,-0.5),
plot.background = element_rect(fill = "#808080")) +
scale_fill_identity(name = "Volume",
guide = "legend", labels = c("B", "S")) +
labs(y = "")
#
plot2
#
plot3 <- ggplot(df) +
theme_dark() +
geom_line(aes(y = EMA_short, x = time, color = "blue"), size = 0.7) +
geom_area(aes(y = EMA_short, x = time), fill = "blue", alpha = .1) +
geom_line(aes(y = EMA_long, x = time, color = "yellow"), size = 0.7) +
geom_area(aes(y = EMA_long, x = time), fill = "yellow", alpha = .1) +
theme(axis.title.x=element_blank(),
axis.ticks.x=element_blank(),
panel.border = element_blank(),
legend.position = c(.1, .95),
legend.justification = c("right", "top"),
legend.box.just = "right",
legend.margin = margin(3, 3, 3, 3),
plot.margin = margin(-0.75,-0.5,2,-0.5),
plot.background = element_rect(fill = "#808080")) +
scale_colour_manual(name = "EMA",
values = c("blue" = "blue", "yellow" = "yellow"), labels = c("EMA50", "EMA200")) +
labs(y = "")
#
plot3
#
gA <- ggplotGrob(plot1)
gB <- ggplotGrob(plot2)
gC <- ggplotGrob(plot3)
grid::grid.newpage()
grid::grid.draw(rbind(gA, gB, gC))
На мой взгляд, я бы хотел 3 графика должны слиться друг с другом таким же образом, как здесь:
Я благодарен за любой совет.
Edit
Спасибо за очень полезные ответы. У меня сейчас только две небольшие проблемы с оптикой. Хотя я позиционировал все легенды одинаково, они расположены где-то в другом месте. Должен ли я форматировать их всех до одного размера? И, к сожалению, слева есть два маленьких белых пятна, как показано на картинке. Я уже пытался делать края больше и меньше, но пятна всегда остаются белыми. Я обновил свой новый код выше. Спасибо!