2016-07-29 17 views
0

Ich bin sicher, es gibt eine wirklich einfache Möglichkeit, dies zu tun, aber ich kann nicht für das Leben von mir herausfinden. Ich mache ein Streudiagramm in Plot_ly. Jedem Punkt, den ich plane, wurde ein Label zugewiesen, z. Pass, High, Low, Sigma hoch etc ...Plotly Zuordnung Farben basierend auf Etikett

enter image description here

Mein Problem ist, dass ich nicht zu beheben können scheinen, welche Farbe plot_ly zu jedem Etikett zuweist. Ich möchte Pass immer weiß sein, High immer grün und so weiter, aber es scheint jedes Mal zufällig Farben zuzuordnen. Hier

ist der Code, den ich

 library("plotly") 
     p <- plot_ly(PT, 
      type='scatter', 
      x=XAVG, 
      y=YAVG, 
      mode= "markers", 
      marker=list(size=3,bgcolor="#e5e5e5"), 
      color = label, 
      colors=c("yellow","red","cyan","magenta",'blue',"green3","white"), 

      zeroline=F, 
      text=paste("MEAS = ",PT$MEAS,"Head_ID = ",substr(PT$SHD_ID,2,5))) 

Jede Hilfe plotten bin mit würde sehr geschätzt, wie ich habe auf diese ewig stecken geblieben!

Danke!

+0

Welches Paket enthält plot_ly? Konnte es nicht finden. – Sia

+1

Können Sie einen minimalen Datensatz zur Verfügung stellen? Z.B. die Objekte PT, XAVB, YAVB. Fügen Sie auch die Informationen des von Ihnen verwendeten Pakets hinzu ("plotly"). – Arcoutte

+0

als @Arcoutte vorgeschlagen, bitte teilen Sie Ihre Daten. Sie können dput() für Ihren Datensatz verwenden, anstatt ein Bild des Datenrahmens zu posten. – epo3

Antwort

1

Sie beschreiben label in Ihrem Beitrag aber label ist aus Ihren Daten fehlen, damit ich eine label Spalte PT mit einigen Etiketten entsprechend Farben hinzugefügt haben scheinen, als in Ihren Kommentaren vorgeschlagen werden. PT ist jetzt:

SHD_ID  MEAS  XAVG YAVG PPKLOW PPKUP PKSLOW PKSUP colour label 
1 1L3P1 0.300018 -5774.5 94350.5 FALSE FALSE TRUE FALSE blue Fail 
2 1LSP0 0.300018 14245.5 94350.5 FALSE FALSE TRUE FALSE blue Fail 
3 1L802 600.000000 -25024.5 94350.5 FALSE FALSE FALSE TRUE green3 Mean 
4 ILSOl 0.300018 -5004.5 94350.5 FALSE FALSE TRUE FALSE blue Fail 
5 1LSOO 0.300018 15015.5 94350.5 FALSE FALSE TRUE FALSE blue Fail 
6 1LSN2 600.000000 -24254.5 94350.5 FALSE FALSE FALSE TRUE green3 Mean 

Der Code erzeugt zuerst color_map als ein Vektor mit dem Namen Komponenten die Zuordnung zwischen Etikett und Ihren Farben zu definieren. Es erstellt dann das Diagramm, das der -Eigenschaft color basierend auf color_map und label Farben zuweist. Die label Werte werden auch verwendet, um eine group zu erstellen, so dass die Zuordnung von Farbe zu Etiketten in der Legende angezeigt wird. Ich habe die Marker größer gemacht, damit die Farben leichter zu sehen sind.

# 
# create a map between colors and labels 
# colors ending in numbers are not recognized by plot_ly 
# 
    color_map <- c(Pass="yellow", High="red", Low= "cyan", 
       Sigma= "magenta", Mean='limegreen', Fail="blue", Median="violet") 
# 
# plot points using color_map to assign colors by label 
#  show label colors in legend 
# 
    p <- plot_ly(PT, 
       type='scatter', 
       x=XAVG, 
       y=YAVG, 
       mode= "markers", 
       marker=list(size=10, bgcolor="#e5e5e5", 
           color=color_map[label]), 
       group = label, 
       zeroline=FALSE, 
       text=paste("MEAS = ", MEAS,"Head_ID = ",substr(SHD_ID,2,5))) 
+0

Das funktioniert großartig! Ich danke dir sehr :) – Marcus