Cargamos el data-set:

library(tidyverse)

properties_data <- read_csv("properties_data.csv")

Generamos graficos con el paquete ggplot:

p1<-ggplot(data = properties_data , aes(x=no_of_bedrooms, y = after_stat(count / sum(count))))+
geom_bar( fill="green3", color="black")+
 scale_y_continuous( n.breaks = 15 , limits=c(0, 0.45))+ 
 scale_x_continuous( n.breaks = 10 )+
 labs(x = "no_of_bedrooms",
 y = "F.Relativa")+
geom_text(aes(label = round(stat(count) / sum(stat(count)), 2)), stat = 'count', vjust = -0.5  )
p2<-ggplot(data = properties_data , aes(x=no_of_bathrooms, y = after_stat(count / sum(count))))+
geom_bar( fill="orange2", color="black")+
 scale_y_continuous( n.breaks = 15 ,  limits=c(0, 0.45))+
 scale_x_continuous( n.breaks = 10 )+
  labs(x = "no_of_bathrooms",
  y = "F.Relativa")+
  geom_text(aes(label = round(stat(count) / sum(stat(count)), 2)), stat = 'count', vjust = -0.5  )

Usamos el paquete patchwork para combinar los graficos ggplot previamente creados:

library(patchwork)

p1 + p2

p1 / p2

Mas ejemplos:

p1<-ggplot(data = properties_data , aes(x=quality, y = after_stat(count / sum(count))))+
geom_bar( fill="skyblue", color="black")+
  scale_y_continuous(limits=c(0,1))+
  labs(x = "quality",
  y = "F.Relativa")+
  geom_text(aes(label = round(stat(count) / sum(stat(count)), 2)), stat = 'count', vjust = -0.5  )

p2<-ggplot(data = properties_data , aes(x=maid_room, y = after_stat(count / sum(count))))+
geom_bar( fill="skyblue", color="black")+
  scale_y_continuous(limits=c(0,1.4))+
  labs(x = "maid_room",
  y = "F.Relativa")+
  geom_text(aes(label = round(stat(count) / sum(stat(count)), 2)), stat = 'count', vjust = -0.5  )

p3<-ggplot(data = properties_data , aes(x=unfurnished, y = after_stat(count / sum(count))))+
geom_bar( fill="skyblue", color="black")+
  scale_y_continuous(limits=c(0,1))+
  labs(x = "unfurnished",
  y = "F.Relativa")+
  geom_text(aes(label = round(stat(count) / sum(stat(count)), 2)), stat = 'count', vjust = -0.5  )

p4<-ggplot(data = properties_data , aes(x=balcony, y = after_stat(count / sum(count))))+
geom_bar( fill="skyblue", color="black")+
 scale_y_continuous(limits=c(0,1.25))+
  labs(x = "balcony",
  y = "F.Relativa")+
  geom_text(aes(label = round(stat(count) / sum(stat(count)), 2)), stat = 'count', vjust = -0.5  )

p5<-ggplot(data = properties_data , aes(x=barbecue_area, y = after_stat(count / sum(count))))+
geom_bar( fill="skyblue", color="black")+
  scale_y_continuous(limits=c(0,1.25))+
  labs(x = "barbecue_area",
  y = "F.Relativa")+
  geom_text(aes(label = round(stat(count) / sum(stat(count)), 2)), stat = 'count', vjust = -0.5  )

p6<-ggplot(data = properties_data , aes(x=central_ac, y = after_stat(count / sum(count))))+
geom_bar( fill="skyblue", color="black")+
  scale_y_continuous(limits=c(0,1))+
  labs(x = "central_ac",
  y = "F.Relativa")+
  geom_text(aes(label = round(stat(count) / sum(stat(count)), 2)), stat = 'count', vjust = -0.5  )

p7<-ggplot(data = properties_data , aes(x=childrens_play_area, y = after_stat(count / sum(count))))+
geom_bar( fill="skyblue", color="black")+
  scale_y_continuous(limits=c(0,1))+
  labs(x = "childrens_play_area",
  y = "F.Relativa")+
  geom_text(aes(label = round(stat(count) / sum(stat(count)), 2)), stat = 'count', vjust = -0.5  )

p8<-ggplot(data = properties_data , aes(x=childrens_pool, y = after_stat(count / sum(count))))+
geom_bar( fill="skyblue", color="black")+
  scale_y_continuous(limits=c(0,1.3))+
  labs(x = "childrens_pool",
  y = "F.Relativa")+
  geom_text(aes(label = round(stat(count) / sum(stat(count)), 2)), stat = 'count', vjust = -0.5  )

p9<-ggplot(data = properties_data , aes(x=concierge, y = after_stat(count / sum(count))))+
geom_bar( fill="skyblue", color="black")+
  scale_y_continuous(limits=c(0,1))+
  labs(x = "concierge",
  y = "F.Relativa")+
  geom_text(aes(label = round(stat(count) / sum(stat(count)), 2)), stat = 'count', vjust = -0.5  )

p10<-ggplot(data = properties_data , aes(x=covered_parking, y = after_stat(count / sum(count))))+
geom_bar( fill="skyblue", color="black")+
  scale_y_continuous(limits=c(0,1))+
  labs(x = "covered_parking",
  y = "F.Relativa")+
  geom_text(aes(label = round(stat(count) / sum(stat(count)), 2)), stat = 'count', vjust = -0.5  )

p11<-ggplot(data = properties_data , aes(x=pets_allowed, y = after_stat(count / sum(count))))+
geom_bar( fill="skyblue", color="black")+
  scale_y_continuous(limits=c(0,1))+
  labs(x = "pets_allowed",
  y = "F.Relativa")+
  geom_text(aes(label = round(stat(count) / sum(stat(count)), 2)), stat = 'count', vjust = -0.5  )

p12<-ggplot(data = properties_data , aes(x=private_garden, y = after_stat(count / sum(count))))+
geom_bar( fill="skyblue", color="black")+
 scale_y_continuous(limits=c(0,1.4))+
  labs(x = "private_garden",
  y = "F.Relativa")+
  geom_text(aes(label = round(stat(count) / sum(stat(count)), 2)), stat = 'count', vjust = -0.5  )
(p1+p2+p3)/(p4+p5+p6)

(p1+p2+p3) / (p4+p5+p6)/ (p7 + p8 + p9) / (p10 + p11 + p12)

(p1+p2)/p3 

Cualquier tipo de ggplot puede ser usado:

p1<-ggplot(data= properties_data, aes(x=no_of_bedrooms, y=price))+
  geom_point(color="blue")

p2<-ggplot(data= properties_data, aes(x=no_of_bathrooms, y=price))+
  geom_point(color="red")
p1+p2

p1+p2+p5

(p1+ p2) / (p5 + p4)

p4 / (p1 + p2) / p5

p4 + (p1 / p2) + p5