2016-10-31 4 views
0

Ich möchte die durchschnittliche Besuchsrate von 6 Tierarten über 4 Behandlungen graphisch darstellen. Ich möchte, dass jede Spezies eine Linie hat, die die Rate widerspiegelt. Wenn ich diesen Code ausgeführt wird:Fehler in ggplotly

library(plotly) 
library(RColorBrewer) 
library(extrafont) 
library(MASS) 
library(lme4) 
library(reshape2) 

dat<-read.table("R-1.AverageVisitationRatewithTrappingPeriod.csv",header=T,sep=",") 
melt.data <- melt(dat,id = c("Site", "Treatment", "TrappingPeriod", "Rainfall"), 
variable.name="Species",value.name="AverageVisitationRate", na.rm = TRUE) 

melt.data$Treatment<-as.factor(melt.data$Treatment) 
Treatment<-melt.data$Treatment 
Species<-melt.data$Species 
AverageVisitationRate<-melt.data$AverageVisitationRate 
str(melt.data) 
melt.data 

plot<- ggplot(melt.data, aes(x = Treatment, y = AverageVisitationRate)) + 
geom_point(aes(color = Species)) + 
facet_grid(Treatment~Species, margins=FALSE,scales="free_y")+ 
stat_smooth(method = 'lm',aes(color = Species),se = FALSE)+ 
labs(list(x = "Treatment", y = "Average Visitation Rate"))+ 
theme(axis.title = element_text(family = "Arial", color="black", size=20),strip.background = element_blank()) 
ggplotly(plot) 

Es erzeugt dann diesen Fehler: Error in $<-.data.frame(tmp, "alpha", value = 1) : replacement has 1 row, data has 0

Hier ist eine Probe meiner Daten:

Treatment Buffalo Impala Nyala Warthog WhiteRhino Wildebeest Zebra 
1 - 0% 0 0 0 0 0 0 0 
1 - 0% 0.166666667 0.25 0 0.083333333 0 0 0 
1 - 0% 0 0.5 0 0 0 0 0 
1 - 0% 0 0 0.125 0 0 0 0 
1 - 0% 0 0 0.038461538 0.076923077 0.076923077 0 0.038461538 
2 - 5% 0.5 0.357142857 0.5 0 0.142857143 0 0 
2 - 5% 0 0.25 0.25 0.083333333 0.166666667 0 0 
2 - 5% 0 0 0.0625 0 0 0 0 
2 - 5% 0 0.2 0 0 0 0 0 
2 - 5% 0 0.076923077 0.038461538 0 0.038461538 0 0.153846154 
3 - 10% 0.625 0.375 0.5 0.3125 0.5625 0 0.0625 
3 - 10% 1.833333333 1.416666667 0.166666667 0.333333333 0 0 0 
3 - 10% 0 0 0 0 0 0 0 
3 - 10% 0.25 0 0.125 0 0 0 0 
3 - 10% 0 1.2 0 0.4 0 0 0 
4 - 20% 0 0 0 0 0 0 0 
4 - 20% 0.333333333 0.5 0.083333333 0.083333333 0.083333333 0 0 
4 - 20% 0 0.1875 0.25 0.125 0 0 0 
4 - 20% 0 0.25 0 0 0 0 0 
4 - 20% 0.115384615 0.076923077 0.269230769 0.076923077 0.115384615 0 0.115384615 

Leider bin ich nicht sicher, wie man eine Tabelle hier einkodiert.

Ist der Fehler das Ergebnis von zu vielen Nullen?

+0

Sie können 'dput (myData)' Ihre Daten zu liefern. Bitte lies und folge [wie man minimal reproduzierbare Beispiele in R liefert] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example#answer-5963610) um es zu machen leicht für andere zu helfen. Ihr Beispiel sollte copy-paste-run'able sein, bis der Fehler auftritt. – lukeA

+0

Sie haben Spalten aus Ihren Beispieldaten verloren? melt.data <- melt (dat, id = c ("Site", "Behandlung", "TrappingPeriod", "Rainfall"), variable.name = "Art", value.name = "AverageVisitationRate", na.rm = TRUE) Ich gehe davon aus, dass die von Ihnen präsentierten Daten bereits geschmolzen sind. – user2945234

Antwort

0

Ich musste die LM entfernen, ich glaube nicht, dass Sie es wirklich mit den aktuellen Daten tun können. Die Datendatei ist nur Ihre Daten im CSV-Format ...

library(plotly) 
library(RColorBrewer) 
#library(extrafont) 
library(MASS) 
#library(lme4) 
library(reshape2) 


melt.data<-data.frame(read.csv(file="C:\\TEMP\\testdata.csv")) 

data.tall<- melt(melt.data, id.vars=c("Treatment")) 
data.tall$variable <- as.factor(data.tall$variable) 

plot1<- ggplot(data.tall, aes(x = Treatment, y = value)) + 
geom_point(aes(colour = factor(variable))) + 
facet_grid(Treatment~variable, margins=FALSE,scales="free_y")+ 
# stat_smooth(method = 'lm',aes(color = variable),se = FALSE)+ 
labs(list(x = "Treatment", y = "Average Visitation Rate"))+ 
theme(axis.title = element_text(family = "Arial", color="black", 
    size=20),strip.background = element_blank()) 
    ggplotly(plot1) 

Example plotly

Verwandte Themen