2016-08-07 20 views
2

Ich habe ein Dataset von etwa 500 Integer-Werten in einer CSV-Datei mit jedem Wert zwischen 50-89. Ich versuche ein Histogramm in R zu erstellen, in dem die Balken, die die Werte 50-65 darstellen, bronzefarben, 66-74 Silber und 75-89 Gold sind. Das Skript, das ich bisher habe, ist die folgende:So zeichnen Sie ein Histogramm mit verschiedenen Farben in R

dat1 <- read.csv("test2.csv", header=F)$V1 
hist(dat1, main="Distribution of Player Ratings", xlim = c(0,99), breaks=c(seq(40,99,5))) 

Eine Probe von test2.csv ist unten dargestellt (sehr einfach)

69, 
68, 
67, 
65, 
65, 
62, 
59, 
59, 
54, 

Gerade jetzt mein Graph ist (sorry, ich bin neu, so habe ich nicht 10 rep Punkte) -

My Graph

Was hätte ich tun, um die Farb Richtlinien erklärt früher zu erfüllen?

Hinweis - Ich hatte diese Frage bereits früher gestellt, aber ohne Code oder Verweis auf meinen Datensatz.

+1

Sie können [r-Kochbuch] gehen (http://www.cookbook-r.com/Graphs/Bar_and_line_graphs_ (ggplot2) /) –

Antwort

4

Sie müssen die col Argumente in der hist Methode hinzufügen wie folgt:

t<- c(69,68,67,65,65,62,59,59,54) 
hist(t, main="Distribution of Player Ratings",xlim = c(0,99), 
     breaks=c(seq(40,99,5)), col = c("blue", "red", "gray", "green")) 

das Bild Ich sehe nach oben Ausführung bekam:

enter image description here

Jetzt können Sie die Farbwerte ersetzen (entweder Name oder hexadezimale Werte wie "# FFFF00") gemäß Ihren Anforderungen.

3

In Ihrer früheren Frage, Sie ggplot2 erwähnt hatte, so ist hier eine ggplot2 Lösung:

Zuerst simulieren Dataset:

set.seed(123) 
df <- data.frame(X = sample(50:89, 500, replace = T)) 

eine neue Variable hinzufügen, die Ihre Farbe Kriterien definiert:

df$group = ifelse(df$X < 66, "50-65", ifelse(df$X < 75, "66-74", "75-89")) 

Laden Sie jetzt die Bibliothek ggplot2, um ein Histogramm

zu erstellen
library(ggplot2) 

ggplot(df, aes(X, fill = group)) + geom_histogram() 

benutzerdefinierte Farben zu geben, verwenden scale_fill_manual:

ggplot(df, aes(X, fill = group)) + geom_histogram() + 
    scale_fill_manual(values = c("50-65" = "#CD7F32", 
           "66-74" = "#C0C0C0", 
           "75-89" = "gold")) 

Dies ist, wie die Figur jetzt aussieht:

enter image description here

Obwohl Sie xlim = c(0,99) enthalten (das ist nicht sichtbar in der angefügte Handlung), ich weiß nicht, warum Sie das benutzen würden. Wenn Sie möchten, können Sie ein xlim Argument mit + xlim(0,99) hinzufügen.

Weitere Informationen zu ggplot2 finden Sie unter here.

Hinweis: Sie können die Anzahl der Bins oder binwidth in geom_histogram definieren.Siehe this für mehr