Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to keep the plot size when hiding the scales using ggplot2?

Tags:

r

ggplot2

I am plotting scatter plot using ggplot2. When I hide the scales, the plot automatically because a little big larger. For example:

ggplot(data = iris, geom = 'blank', aes(y = Petal.Width, x = Petal.Length)) + geom_point()

ggplot(data = iris, geom = 'blank', aes(y = Petal.Width, x = Petal.Length)) +
geom_point() +
theme(axis.title.x = element_blank(),
      axis.title.y = element_blank(),
      legend.position = "none")

The second one is larger. How I can avoid it? I only want to hide the scales and the label but keep the plot as the first one because I want to combine the two, one with scale and one without, but keep the plot size the same. Thanks.

like image 848
Autumn Avatar asked Dec 29 '25 03:12

Autumn


1 Answers

tricky but works. axis in white

ggplot(data = iris, geom = 'blank', aes(y = Petal.Width, x = Petal.Length)) + geom_point()

+ theme (axis.title.x = element_text(family = "sans", face = "bold"))
ggplot(data = iris, geom = 'blank', aes(y = Petal.Width, x = Petal.Length)) +
  geom_point() +
  theme(axis.title.x = element_text(family = "sans", face = "bold",colour='white'))+
  theme(axis.title.y = element_text(family = "sans", face = "bold",colour='white'))

Edit : general solution

p1 <- ggplot(data = iris, geom = 'blank', aes(y = Petal.Width, x = Petal.Length)) + geom_point()

p2 <- ggplot(data = iris, geom = 'blank', aes(y = Petal.Width, x = Petal.Length)) +
  geom_point() +
  theme(axis.title.x = element_blank(),
        axis.title.y = element_blank(),
        legend.position = "none")

gA <- ggplot_gtable(ggplot_build(p1))
gB <- ggplot_gtable(ggplot_build(p2))
gA$widths  <- gB$widths
gA$heights <- gB$heights

plot(gA)
plot(gB)
like image 105
agstudy Avatar answered Dec 31 '25 18:12

agstudy