2017-04-20 3 views
1

Ok, so habe ich einen Datensatz mit 2 Variablen X und Y, und eine ID-Variable. Ich habe eine vollständige Handlung mit diesem Code erstellt:Verwenden greppel mit einzelnen Plot Punkt/Zeile zwischen Etikett und Punkt

ggplot(data = X_Y) + 
    geom_point(mapping = aes(x = X, y = Y))+ 
    geom_text_repel(mapping = aes(x = X, y = Y, label = ID))+ 
    xlim(0,100)+ 
    ylim(0,100) 

Dies ein Grundstück wie folgt erzeugt: enter image description here

ich jetzt nur eine Reihe von separaten Plots erstellen möchte einen einzelnen Datenpunkt zu einer Zeit, mit ihrem Label.

Jetzt kann ich nur ohne repel verwenden geom_label und schubsen das Etikett dieses zu erhalten: enter image description here

Während dieses Grundstück in Ordnung, ich frage mich, ob es eine Möglichkeit, die Verbindungslinien Etiketten Punkte zu halten war wie, wie ggrepel tut ...

EDIT

Vom ersten Vorschlag, wenn ich abstoßen mit nur einem Fall versuchen, wählte ich die folgende Handlung erhalten:

ggplot(data = X_Y) + 
    geom_point(aes(x = X[4], y = Y[4]))+ 
    geom_label_repel(aes(x = X[4], y = Y[4]), 
        label = "You are here", 
        min.segment.length = unit(0, 'lines'), 
        nudge_y = 6)+ 
    labs(x = "X",y = "Y",title = "mytitle")+ 
    scale_x_continuous(limits = c(0, 100)) + 
    scale_y_continuous(limits = c(0, 100)) 

enter image description here

es RESOLVED Figured aus! Ich muss meine Daten in ggplot() angeben, um nur die X- und Y-Variablen zu sein und auf die Zeile von Interesse zu beschränken.

So:

ggplot(data = X_Y[4,c(3,4)) + 
    geom_point(aes(x = X, y = Y))+ 
    geom_label_repel(aes(x = X, y = Y), 
        label = "You are here", 
        min.segment.length = unit(0, 'lines'), 
        nudge_y = 6)+ 
    labs(x = "X",y = "Y",title = "mytitle")+ 
    scale_x_continuous(limits = c(0, 100)) + 
    scale_y_continuous(limits = c(0, 100)) 

Antwort

0

Sie können natürlich noch geom_label_repel verwenden, auch mit einem einzigen Punkt. Um sicher zu gehen, dass ein Segment gezeichnet wird, passen Sie die min.segment.length arg an. Diese arg setzt den Mindestabstand von dem Punkt auf dem Etikett ein Segment zu ziehen, sorgt sie für zu unit(0, 'lines') Einstellung jedes Segment gezogen wird:


library(ggplot2) 
library(ggrepel) 

ggplot(data.frame(x = 2, y = 3)) + 
    geom_point(aes(x, y)) + 
    geom_label_repel(aes(x, y), 
        label = 'You are here', 
        min.segment.length = unit(0, 'lines'), 
        nudge_y = .2) + 
    scale_x_continuous(limits = c(0, 3)) + 
    scale_y_continuous(limits = c(0, 4)) 

+0

Danke für die repsonse! Ich habe versucht, das, aber ich bekomme ein seltsames Diagramm, es sieht aus wie es Beschriftungen für die gesamte N des Datasets, aber auf diesem einzigen Punkt .... Ich habe meine Frage oben zu präsentieren .... – Gerard

+0

Herausgefunden! Ich muss meine Daten in ggplot() angeben, um nur die X- und Y-Variablen zu sein und auf die Zeile von Interesse zu beschränken. Dann fließt es :) – Gerard

Verwandte Themen