2016-04-14 4 views
1

Ich denke, dass es einen Fehler in der Art und Weise gibt, wie der Parameter pch in der Dotchart-Funktion gelesen wird, würde aber eine Peer-Bestätigung vor der Meldung wünschen.Fehler in dotchart pch?

Im Folgenden möchte ich sowohl Farbe und Symbol mit der Gruppe variieren. Farbe funktioniert gut, wie erwartet, aber kein Symbol.

foo <- data.frame(Specimen=paste("Specimen", 1:18), 
       Group=c(rep("Benign", 4), 
         rep("In-situ", 6), 
         rep("Invasive", 8)), 
       Outcome=rweibull(18, 5) + (1:18/18)) 

with(foo, dotchart(Outcome, 
    groups = Group, 
    color = c("green", "orange", "red")[Group], 
    pch=c(16, 15, 17)[Group], 
    xlab="Outcome measure /bar", 
    labels = Specimen)) 

Es ist eine einfache, aber eher bizarre Abhilfe durch die Spalte „Gruppe“ Codierung pch Umkehrung:

with(foo, dotchart(Outcome, 
    groups = Group, 
    color = c("green", "orange", "red")[Group], 
    pch=c(16, 15, 17)[rev(Group)], 
    xlab="Outcome measure /bar", 
    labels = Specimen)) 

Allerdings kann ich nicht sein, sehen sollte einen einzigen legitimen Grund, warum der Vektor für pch hat umgekehrt, zumal die Farbe scheinbar wie erwartet funktioniert. Gedanken?

Übrigens, der Grund, warum ich generell versuche, sowohl das Symbol als auch die Farbe für verschiedene Gruppen in einem Diagramm zu variieren, ist für Farbblindleser. Zugegeben, in diesem Fall ist es nicht so wichtig.

Antwort

0

Ich stimme zu, dass dies ein Fehler sein kann (was ich wirklich in Basis R Funktionen wie diese vorsichtig bin).

specficially, dotchart ordnet die color und lcolor (Linienfarbe) Argumente hier:

o <- sort.list(as.numeric(groups), decreasing = TRUE) 
x <- x[o] 
groups <- groups[o] 
color <- rep_len(color, length(groups))[o] 
lcolor <- rep_len(lcolor, length(groups))[o] 

... und die sind in den nachfolgenden abline und points Anrufe verwendet, aber pch auf unverändert weitergegeben. Das Update wäre wahrscheinlich einfach die Zeile,

pch <- rep_len(pch, length(groups))[o] 

Wenn ich auf meinem pedantisch Hut setzen wollte (die vor dem Einreichen eines Fehlerberichts eine gute Idee ist), würde ich beachten Sie, dass die Dokumentation für ?dotchart angibt:

Farbe die Farbe (n) für Punkte und Etiketten.

für das color Argument, aber nur:

pch das Plotten Zeichen oder Symbol verwendet werden.

für das pch Argument. Einige mögen argumentieren, dass dies "eindeutig" impliziert, dass nur color mehrere Werte annehmen soll, und in diesem Sinne ist dies kein "Bug".

+0

Vielen Dank. Ich habe gerade Ihre Lösung getestet (eine Funktion "dottychart" mit dieser zusätzlichen Zeile erstellt), und es funktioniert gut. Ich denke, ich könnte versuchen, dies zu melden, außer du würdest es gerne tun? Ich bin relativ Anfänger und nicht daran gewöhnt, in den Innereien der Basisfunktionen zu graben! Ich kann nicht sehen, welchen Schaden es beim Hinzufügen dieser einen Zeile zum Code geben würde. Ich habe eher ein Versehen als eine absichtliche Unterlassung. – Knackiedoo

Verwandte Themen