This one may be close to the result you need:
ggplot(df_long, aes(x = Variable, y = ID, color = Z_score, size = abs(Z_score))) +
geom_point() +
scale_y_discrete(position = "right")+
facet_grid(rows = vars(Group), scales = "free_y", space = "free_y", switch = 'y') +
scale_color_gradient2(low = "blue", mid = "white", high = "red", midpoint = 0) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1),
strip.text.y.left = element_text(angle = 0)
) +
labs(x = "Variables", y = "Cell Line", color = "Z-Score", size = "Magnitude")