2017-08-28 1 views
1

Ich möchte das geom_count-Diagramm von ggplot2 verwenden, aber mit einem zu kleinen Wertebereich werden die Legendenbrüche zu Gleitkommazahlen für Zählungen von Vorkommen, z. Hier 1 1.5 2 2.5 3ggplot2 geom_count set legende bricht auf ganze Zahlen ab

ist ein Testfall:

test = mtcars[1:6,] 

ggplot(test, aes(cyl, carb)) + 
    geom_count(aes(color = ..n.., size = ..n..)) + 
    guides(color = 'legend') 

Wie kann ich die Pausen nur bei voller Zahlen auftreten?

Antwort

3

Sie können die breaks für die kontinuierlichen color und size Skalen einstellen.

Sie einen Vektor von Werten für die Pausen geben kann, aber je die Dokumentation des breaks Argument auch gegeben werden kann:

eine Funktion, die die Grenzen als Eingabe und gibt Pausen als Ausgang

nimmt

Für einen einfachen Fall wie Ihr Beispiel könnten Sie as.integer oder round als Funktion verwenden.

ggplot(test, aes(cyl, carb)) + 
    geom_count(aes(color = ..n.., size = ..n..)) + 
    guides(color = 'legend') + 
    scale_color_continuous(breaks = round) + 
    scale_size_continuous(breaks = round) 

Für einen größeren Bereich von ganzen Zahlen als Ihr Beispiel könnten Sie entweder die Pausen manuell eingeben, zum Beispiel breaks = 1:3, oder eine Funktion schreiben, die die Grenzen der Skala nimmt und gibt eine Folge von ganzen Zahlen. Sie könnten diese Funktion dann für breaks verwenden.

Das aussehen könnte:

set_breaks = function(limits) { 
    seq(limits[1], limits[2], by = 1) 
} 

ggplot(test, aes(cyl, carb)) + 
    geom_count(aes(color = ..n.., size = ..n..)) + 
    guides(color = 'legend') + 
    scale_color_continuous(breaks = set_breaks) + 
    scale_size_continuous(breaks = set_breaks) 
+0

Verwendung eines Vektors Dank funktioniert, aber wenn ich 'verwenden round' ich einen Wert verlieren? Hier ist ein Testfall test = Datenrahmen (cyl = c (rep (4,3), rep (2,2), 1), carb = c (rep (6,3), rep (2,2) , 5)) 'Wo Pausen verwenden = Runde Ergebnisse in Pausen bei 1 und 3 statt 1, 2, 3 – voiDnyx

+0

@voiDnyx Siehe bearbeiten – aosmith