ändern Sie die Farbe von nur einem bar in ggplot
Ich möchte die Farbe nur eine bar in ggplot. Das ist mein Daten-frame:
area <- c("Północ", "Południe", "Wschód", "Zachód")
sale <- c(16.5, 13.5, 14, 13)
df.sale <- data.frame(area, sale)
colnames(df.sale) <- c("Obszar sprzedaży", "Liczba sprzedanych produktów (w tys.)")
Und code für die Auswertung:
plot.sale.bad <- ggplot(data=df.sale, aes(x=area, y=sale, fill=area)) +
geom_bar(stat="identity") +
scale_fill_manual(values=c("black", "red", "black", "black")) +
xlab(colnames(df.sale)[1]) +
ylab(colnames(df.sale)[2]) +
ggtitle("Porównanie sprzedaży")
Möchte ich nur eine bar farbige und 3 andere haben Standard-Farbe (dunkelgrau, nicht schwarz, es sieht schlecht aus für mich). Wie kann ich die Farbe ändern, nur auf der bar, oder wie man den Namen des Standard-Farbe von Balken zu setzen, statt schwarz?
Wenn Sie nicht wollen, um anzeigen
Ich möchte zu unterscheiden, die zweite bar form, andere Farbe und andere bars haben sollte Standard, unveränderte Farbe. Das ist es, was ich will.
Für das Beispiel haben Sie zur Verfügung gestellt,
fill
auf 'Bereich', warum verwenden Sie es in Ihrem aes
? Könnte es besser sein, eine variable hinzufügen, um Ihre Daten-frame, spiegelt die Bedingungen, die Sie möchten anzeigen zu fill
. Aber Sie brauchen, um zu beschreiben, Ihre Ziele klar werden.Ich möchte zu unterscheiden, die zweite bar form, andere Farbe und andere bars haben sollte Standard, unveränderte Farbe. Das ist es, was ich will.
Für das Beispiel haben Sie zur Verfügung gestellt,
scale_fill_manual
ist vor Ort auf. Wenn Sie wollen, es zu tun mehr "programmgesteuert" dann müssen Sie einige Kennzeichen (Berechnung cut
Bereich, etc), die es möglich machen würde, zu bestimmen, welche bar(s) sollten in einer anderen Farbe. Für Ihr Beispiel, was die Bedingung angegeben, dass Południe
sollte rot sein?InformationsquelleAutor jjankowiak | 2014-04-06
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Option 1: Ändern Sie die Farbe von nur einem bar. Folgende Heinrichs Vorschlag, Sie können eine neue variable erstellen mit dem NAs für die Standard-Farbe und Zeichenketten (strings)/Faktoren für nicht-Standard-Farben (das erste geschieht, werden rot):
Option 2: Suchen Sie den Namen der standardmäßig dunkelgrauen Farbe, die Sie mögen. Dies ist nicht die Standard-Farbe, wenn Sie entfernen Sie einfach die
scale_fill_manual
Zeile in deinem original-code (in diesem Fall erhalten Sie vier verschiedenen Pastell -), also ich nehme an, du meinst die graue Farbe produziert von der code-chunk nur über diesen Absatz, für diejenigen, die bars, in denenarea.color==NA
. In diesem Fall könnte man auf den source-code (oder args, jedenfalls)scale_fill_discrete
:Standard für
na.value
ist"grey50"
. Also, wenn Sie wolltescale_fill_manual
könnte man es machen, wie so:Nur ein kleines update, wie die
area.colour <- c(NA, "withcolor", NA, NA)
funktionierte nicht für mich (Takte 1, 3 und 4 waren einfach nicht vorhanden). Stattdessen habe ich verwendetarea.colour <- c("one", "two", "one", "one")
und dannscale_fill_manual(values = c("gray50", "red"))
, die arbeitete wie ein Charme (und Sie können einfach kontrollieren, Legende, Beschriftungen mit dem, was ist inarea.colour
).InformationsquelleAutor pangia
Wenn Sie gern alles in den ggplot aufrufen, können Sie eine
ifelse
- Anweisung innerhalbfactor()
für die Füllung wie unten gezeigt.Diese auch trennt die Legende in zwei Kategorien (d.h. markiert und nicht markiert), so dass Sie nicht wiederholen Sie die Werte auf der x-Achse. Dies bietet auch eine weitere, illustrative dimension der plot in der Legende.
Wenn die Legende ist es nicht notwendig, Sie können hinzufügen
show.legend = FALSE
zu dengeom_boxplot()
Anruf zu produzieren, die folgenden:InformationsquelleAutor Russ Thomas