2016-01-06 10 views
8

Ich habe Probleme, ein Grundstück neu zu erstellen, seit ich auf ggplot Version 2.0.0 aktualisiert: Es scheint, ich kann die Punktgröße nicht so viel wie vorher reduzieren, was ein Problem in einem Plot ist mit sehr vielen Punkten. In den folgenden Beispielen gibt es einen vernünftigen Unterschied in der Punktgröße zwischen Plot1 und Plot2 ist, ist die Punktgröße in plot3 zumindest ein wenig kleinen, aber zwischen plot3 und plot4 es kein Unterschied in der Punktgröße ist:Punktgröße in ggplot 2.0.0

df <- data.frame(x=1:10, y=runif(10)) 
pl <- ggplot(df) + 
    geom_point(aes(x,y), size=1) 
ggsave("plot1.png", plot=pl, width=14, height=7, units="cm", dpi=1200) 

pl <- ggplot(df) + 
    geom_point(aes(x,y), size=0.1) 
ggsave("plot2.png", plot=pl, width=14, height=7, units="cm", dpi=1200) 

pl <- ggplot(df) + 
geom_point(aes(x,y), size=0.01) 
ggsave("plot3.png", plot=pl, width=14, height=7, units="cm", dpi=1200) 

pl <- ggplot(df) + 
geom_point(aes(x,y), size=0.001) 
ggsave("plot4.png", plot=pl, width=14, height=7, units="cm", dpi=1200) 

In der vorherigen Version von ggplot2 hatte ich eine Punktgröße von 0,25 verwendet und es sah viel kleiner aus als jetzt, weshalb ich versuchte, es mit der neuen ggplot2-Version weiter zu reduzieren. Verpasse ich eine Änderung im Code der neuen Version? Konnte nichts in der Dokumentation ...

+1

erklärt wurde auf Twitter von Hadley Wickham hingewiesen (http://blog.rstudio.org/2015/12/ 21/ggplot2-2-0-0 /) finden wir, dass "' geom_point() 'jetzt Form 19 statt 16 verwendet." Ich weiß nicht, ob das die einzige Veränderung ist, die das Aussehen der Punkte beeinflusst hat. – Henrik

+0

Ja, das habe ich gesehen, konnte aber nichts über die Größe finden – silkita

+0

Interessant - die Verwendung von shape = 16 ergibt viel kleinere Punktgrößen als die neue Form = 19 und shape = "." ist eigentlich ein Quadrat und kein Punkt – silkita

Antwort

7

Ok, ich habe die Lösung gefunden. Wie bereits von @henrik und @silkita gezeigt, hat sich die Standardform in der letzten Version von ggplot2 von 16 auf 19 geändert. Und wie Sie in der Dokumentation sehen können (zum Beispiel here) ist die Form '19' etwas größer als '16'. Aber das ist nicht der Grund, warum "Punkte" in Version 2.0.0 größer sind. Mit Blick auf die ggplot2 Quelle geom-point.R für die neueste Version können wir sehen, dass:

default_aes = aes(
    shape = 19, colour = "black", size = 1.5, fill = NA, 
    alpha = NA, stroke = 0.5 
) 

Während in den früheren Versionen war es:

default_aes <- function(.) aes(shape=16, colour="black", size=2, fill = NA, alpha = NA) 

, dann den kleinen Punkt zu haben, wie, bevor wir setzen sollten stroke zu Null. Um es zusammenzufassen, um den kleinsten Punkt erhalten Sie schreiben sollen:

geom_point(size = 0.1) # ggplot2 before 2.0.0 
geom_point(size = 0.1, stroke = 0, shape = 16) # ggplot2 2.0.0 

By the way, wenn mit kleinsten Punkten arbeiten gibt es keinen Unterschied zwischen der Verwendung von verschiedenen Formen (ein Pixel bleibt ein Pixel).

UPDATE: Da diese Änderung der im [ggplot 2.0.0 Ankündigung] release notes

+1

Gute Lösung. Interessant, dass sie es geändert haben. Ich würde sagen, es war vielleicht eine Regression. –

+0

Außer wenn ich es ausprobiere funktioniert es nicht. Und die Dokumentation, die Sie verlinkt haben, behauptet, dass "stroke" nicht einmal auf "shape = 16" funktioniert. –

7

Versuchen Sie, die Formparameter verwenden:

n <- 10000 
df <- data.frame(x=1:n, y=runif(n)) 
pl <- ggplot(df) + 
    geom_point(aes(x,y), size=1,shape=".") + labs(title="shape='.',size=1") 
pl 

ergibt:

enter image description here

während:

pl <- ggplot(df) + 
    geom_point(aes(x,y), size=1) + labs(title="size=1") 
pl 

ergibt: - (und es ist das gleiche für alle kleineren Größen)

enter image description here

+0

Danke, definitiv besser als vorher und ein guter Workaround, aber ich brauche noch kleinere Punkte (die ich in der vorherigen ggplot2 Version hatte), und würde gerne die Punktgröße kontrollieren ... – silkita

+0

Ja, ich hatte ein ähnliches Problem . Sollte schauen und sehen, ob dies noch als Regressionsfehler eingereicht wird. –

+0

Seltsam, dass ich auf einmal eine Aufwertung verloren habe. Es ist keine schlechte Problemumgehung. –