Zwei horizontale Balkendiagramme mit gemeinsamer Achse in ggplot2 (ähnlich der Bevölkerungspyramide)

Ich möchte zwei Variablen in einem Diagramm darstellen, das einer Bevölkerungspyramide ähnlich ist:

Diese Handlung istfast da aber nicht ganz, aus den gründen die ich unten auflisten werde.

Ich habe diese Handlung mit folgendem Code erstellt:

DATA <- data.frame(
    state = c("AK", "TX", "CA", "MT", "NM", "AZ", "NV", "CO", "OR", "WY", "MI", "MN", "UT", "ID", "KS", "NE", "SD", "WA", "ND", "OK"),
    sales_staff = c(20,30,40,10,15,35,18,25,22,7,12,22,3,4,5,8,14,28,24,32)
)

set.seed(1)
DATA$sales <- DATA$sales_staff * 50 + (runif(nrow(DATA)) * 1000)

# Order the state factor by number of sales staff so that it is plotted in that order
DATA$state <- factor(DATA$state, levels = DATA[order(DATA$sales_staff),"state"])

Ich möchte zwei Diagramme hintereinander "kleben", also verwende ich die Funktion multiplot () wörtlich vonhttp://www.cookbook-r.com/Graphs/Multiple_graphs_on_one_page_%28ggplot2%29/

(Der Kürze und Klarheit halber werde ich den Code für diese Funktion hier nicht wiedergeben.)

Mein Code für die endgültige Handlung lautet:

library(ggplot2)

g1 <- ggplot(data = DATA, aes(x = state, y = sales_staff)) +
  geom_bar(stat = "identity") + ggtitle("Number of sales staff") +
  theme(axis.title.x = element_blank(), axis.title.y = element_blank(), axis.text.y = element_blank(), axis.ticks.y = element_blank(), plot.margin = unit(c(1,0,1,0), "mm")) +
  scale_y_reverse() + coord_flip()

g2 <- ggplot(data = DATA, aes(x = state, y = sales)) +
  geom_bar(stat = "identity") + ggtitle("Sales (x $1000)") +
  theme(axis.title.x = element_blank(), axis.title.y = element_blank(), plot.margin = unit(c(1,5,1,0), "mm")) +
  coord_flip()

multiplot(g1, g2, cols = 2)

OK. Also, was ist los mit dieser Handlung?

Ich muss die Häkchen auf der rechten Achse des linken Diagramms bekommen. Ich kann nicht herausfinden, wie das geht.Die beiden Darstellungen sind unterschiedlich breit. Dies liegt daran, dass die Zustände in der Mitte die Achsenbeschriftungen des rechten Diagramms sind und einen Teil des Raums für dieses Diagramm verwenden.

Ich habe eine Ziegelmauer getroffen, als ich dieses Grundstück auf "Produktionsqualität" gebracht habe. Ich frage mich, ob ich das falsch mache, weil ich denke, dass der nächste Schritt darin besteht, die Achsenbeschriftungen als separate dritte Spalte zwischen den beiden Darstellungen zu zeichnen. (Ich weiß noch nicht, wie das geht). Dies wird das Problem der "gleichen Größe" lösen und es mir ermöglichen, einen "Status" -Titel hinzuzufügen, so dass es möglicherweise immer noch der richtige Weg ist. Aber ich frage mich, ob es einen einfacheren Weg gibt ...

Jeder Rat oder jede Hilfe wird gebeten!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage