Mit Hilfe von @ Nick Criswell ich gelernt habe, wie eine Make Plot-Funktion zum Erstellen und lapply mit ggplot2 und aes_string. loop Freq plot with GGPLOT aes_stringPlot nur Werte größer als angegeben Wert: ggplot R
Ich habe Probleme, den Code zu ändern, um nur Werte zu plotten, die größer als ein vorgegebener Schwellenwert sind. Bevor die Funktion Ansatz codiert ich folgendes, die funktioniert:
p <- ggplot(subset(DAT, al.sum>10), aes(word, al.sum, y=freq))
Frage: Wie modifiziere ich den folgenden Code nur Plot Werte über einen bestimmten Schwellenwert? h. ich möchte nur, dass jeder Datensatz in das Häufigkeitsdiagramm aufgenommen wird, wenn der Zählwert größer als 10 ist. Aus dem unten stehenden Code mit dieser Bedingung für al.sum würden nur Dot_Matricks in dem Diagramm enthalten sein.
#set work DIR
setwd("C:/A")
#Data create
DAT <- read.table(text = "ID a1.sum b3.sum c6.sum d9.sum
April_Showers 10 5 15 0
Anita_Job 2 3 1 14
Candy_Cain 4 7 14 17
Crystal_Ball 6 8 16 12
Dot_Matricks 15 9 0 1
Kay_Largo 4 10 5 13",
header = TRUE, stringsAsFactors = FALSE)
#Plot Data function
library(ggplot2)
make_plots = function(data, column){
ggplot(data, aes_string(x = "ID", y=column)) +
geom_bar(stat="identity", fill="blue", color="green") +
theme(plot.background = element_rect(fill = "white"),
panel.background = element_rect(fill = "white"),
panel.grid.major = element_line(colour = "white",size=0.25),
panel.grid.minor = element_blank(),
axis.text.x=element_text(size=10,angle=90, hjust=1,
face="plain", family="serif"),
axis.text.y=element_text(size=10, hjust=1, face="plain", family="serif"),
axis.line.x = element_line(color="black", size = 0.50),
axis.line.y = element_line(color="black", size = 0.5))
}
#lapply function
myplots <- lapply(colnames(DAT[2:ncol(DAT)]), make_plots, data = DAT)
#collect names of each col that end with .sum
n <- names(DAT[grep("*.sum",names(DAT))])
#save each plot as .png
for (i in 1:length(n)){
print(myplots[i])
ggsave(filename=paste0(i,".png"))
}
Anstatt 'data' an' ggplot() 'zu senden, sende' subset (data, a1.sum> 10) ' – jdobres
Ja, du solltest Subset, aber' Subset' ist nur für den interaktiven Gebrauch gedacht, wäre es besser zu verwenden 'Daten [Daten $ a1.sum> 10,]' – Llopis