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

Ich möchte plot zwei Variablen auf einem Grundstück ähnlich einer Bevölkerungspyramide, die ähnlich dieser:

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

Dieses Grundstück ist fast es aber nicht ganz aus den Gründen, die ich Liste unten.

Produzierte ich diese Darstellung mit dem folgenden code:

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"])

Möchte ich "kleben" zwei Grundstücke back-to-back, so dass ich die multiplot () - Funktion wörtlich aus http://www.cookbook-r.com/Graphs/Multiple_graphs_on_one_page_%28ggplot2%29/

(Die ich nicht reproduzieren, der code für die Funktion hier für Kürze und Klarheit)

Mein code für die Letzte Handlung ist:

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 falsch mit dieser Handlung?

  • Ich brauche, um die Häkchen auf der rechten Achse von der linken plot. Ich kann nicht herausfinden, wie das zu tun.
  • Die beiden Parzellen sind in unterschiedlichen breiten. Dies ist, weil die Staaten in der Mitte, sind die Achsen-Beschriftungen aus der rechten plot und einige der Raum für das Grundstück.

Den ich getroffen habe, eine Mauer zu bekommen, diese Handlung zu "Produktion und Qualität". Ich fange an zu Fragen, wenn ich werde über diese in die falsche Richtung, denn ich denke der nächste Schritt wird sein, zu zeichnen, die Achsen-Beschriftungen als separate Dritte Spalte zwischen den beiden plots. (Ich weiß aber noch nicht, wie Sie dies tun). Diese lösen die "gleiche Größe" Thema und erlauben Sie mir noch ein "state" - Titel, also es kann noch immer der Weg zu gehen. Aber ich kann mir nicht helfen, aber Frage mich, ob es einen einfacheren Weg...

Jeden Rat oder Hilfe dankbar!

  • Können Sie passen Sie stackoverflow.com/questions/14680075/... für Ihre Zwecke?
  • Ich bin eine eingefleischte ggplot2 fan und das Paket für absolut alles, was ich kann, aber wenn ich die erforderlich sind, um eine Pyramide plot ähnlich wie der vor ein paar Monaten habe ich schließlich aufgegeben und verwendet pyramid.plot von der plotrix Paket. Nein, ich wusste nicht, wie die syntax, aber es war nicht schwer und ich habe bessere Ergebnisse als mit ggplot2 und mit viel weniger Gefummel.
  • Sie sollten die Suche nach "Rücken an Rücken charts".
  • mögliche Duplikate von Zeichnung Pyramide plot mit R und ggplot2
  • Es ist ein vor kurzem Hinzugefügt, hervorragende demonstration, wie man die Feinabstimmung eines ggplot2 back-to-back-bar-chart: stackoverflow.com/a/37374271/3817004
Schreibe einen Kommentar