2016-07-29 11 views
3

wollte ich eine kreisförmige Balkendiagramm wie unten gezeigt:Polar Bar Plot, mit Innen meisten Kreis leer R Mit

enter image description here Aber jetzt habe ich nur: enter image description here

Um dies zu machen, habe ich der folgende Code in R:

require(ggplot2) 
ggplot(PolarPlot,aes(x,y, 
        fill=x))+ 
     geom_bar(width=1,stat="identity")+ 
     coord_polar() + xlab("")+ylab("")+ 
    theme(legend.position = "none" , axis.text.y = element_blank() , 
     axis.ticks = element_blank() 

Kann jemand sagen, welche Änderungen ich machen muss, um mein gewünschtes Diagramm zu erhalten?

Die Daten sind wie folgt:

PolarPlot <- structure(list(x = structure(1:7, .Label = c("Class1", "Class2", 
    "Class3", "Class4", "Class5", "Class6", "Class7"), class = "factor"), 
    y = c(2L, 8L, 17L, 56L, 28L, 7L, 2L)), .Names = c("x", "y"), 
    class = "data.frame", row.names = c(NA, -7L)) 
+1

Es sieht so aus, als würden wir Ihre Daten vermissen. Für diese Art von Frage benötigt SO ein vollständig reproduzierbares Beispiel, damit wir Ihnen helfen können. –

+0

Ich habe die Daten hinzugefügt. Es ist nur eine einfache Häufigkeitstabelle. – 204

+1

Danke. Sie würden sagen, es auf eine Weise zu veröffentlichen, die reproduzierbar ist (was bedeutet, dass Sie es in R lesen können). Vielleicht möchten Sie 'dput (the_data)' verwenden. –

Antwort

3

Sie Ihr Grundstück zu produzieren, indem zunächst ein Balkendiagramm erstellen und sie dann in Polarkoordinaten umzuwandeln (was in Ordnung ist). Wenn Sie möchten, dass die Balken nicht in der Mitte im Polar Plot beginnen, müssen Sie sicherstellen, dass sie nicht im Balkenplot unten beginnen.

Was ich meine ist am einfachsten erklärt, indem Sie es tatsächlich zeigen. Zuerst erstelle ich die Bar auf die gleiche Weise zeichnen, wie Sie tun, aber ich verlängern die y-Achse auf negative Werte zu erreichen:

p <- ggplot(PolarPlot, aes(x, y, fill=x)) + 
     geom_bar(width=1,stat="identity") + 
     xlab("") + ylab("") + 
     theme(legend.position = "none" , axis.text.y = element_blank() , 
      axis.ticks = element_blank()) + 
     scale_y_continuous(limits = c(-50, 60)) 

enter image description here

Wenn ich in Polarkoordinaten zu wechseln, bei er die Lücke unteren Ende des Stabes Grundstück befindet sich in der Mitte des Polarplot in einen Spalt umgewandelt:

p + coord_polar() 

enter image description here

Sie die Größe der Lücke ändern können die Mitte durch Spielen mit den Werten limits in scale_y_continuous().