2013-05-13 6 views
6

Ich möchte fragen, wie man diesen Fehler in Frage Titel beschrieben beheben? Gerade gestern funktionierte der Code gut und die Plot-Routine erzeugte die gewünschte Grafik. Wachte heute auf und versuchte einige Funktionen hinzuzufügen und erhielt dann die Fehlermeldung.ggplot 2 "Fehler: Diskreter Wert an kontinuierliche Skala geliefert"

Irgendwelche Hinweise wie und warum?

Thx

Datenverbindung: Data.csv

Code:

# Loading data 
    morStats <- read.csv(file = "F:/Purdue University/RA_Position/PhD_ResearchandDissert/PhD_Draft/DissertationDraft/MoroccoCGE-CC_Stats.csv", header=TRUE, sep=",", na.string="NA", dec=".", strip.white=TRUE) 

    # Transferring the .csv data into data frames 
    moroccostats <- as.data.frame(morStats) 

    # Changing the data in the dataframe to "as.numeric" 
    moroccostats[3:38] <- sapply(moroccostats[3:38],as.numeric) 
    moroccostats <- droplevels(moroccostats) 

    # reorder 
    moroccostats <- transform(moroccostats,year=factor(year,levels=unique(year))) 

    # Load packages 
    library(reshape2) 
    library(ggplot2) 
    library(lattice) 
    library(grid) 
    library(plyr) 
    library(gridExtra) 
    library(scales) 

    #---------------------------------------------------------------------- 
    # Figure 1: Evolution of population (in absolute terms) 1960-2050 
    #--------------------------------------------------------------------- 

    #_Code_Begin... 

    moroccostats.f <- melt(moroccostats, id="year") 
    morstats.pop <- moroccostats.f[moroccostats.f$variable %in% c("pop_t","pop_ur","pop_ru"),] 

    Figure1 <- ggplot(data=morstats.pop,aes(x=factor(year), y=value,colour=variable)) 
    Figure1 + geom_line(aes(group=factor(variable)),size=1) + geom_point() + scale_colour_manual("Population",labels=c("Total","Urban","Rural"),values = c("black","red","blue")) + 
    labs(y="Population (in 1000)") + 
    theme(axis.text.x = element_text(colour = 'black', angle = 90, size = 13, hjust = 1, vjust = 0.5),axis.title.x = element_blank()) + 
    theme(axis.text.y = element_text(colour = 'black', size = 13, hjust = 0.5, vjust = 0.5), axis.title.y = element_text(size = 10, hjust = 0.5, vjust = 0.2, face = 'bold')) + 
    scale_x_discrete(breaks = seq(1960, 2050, by=2)) + 
    scale_y_continuous(breaks = seq(0, 42000, by=5000)) 

    #_Code_End... 

Antwort

10

moroccostats hat die Struktur

> str(moroccostats) 
'data.frame': 91 obs. of 38 variables: 
$ year   : Factor w/ 91 levels "1960","1961",..: 1 2 3 4 5 6 7 8 9 10 ... 
$ periodframe  : Factor w/ 4 levels "0","Phase 1 (1965 to 1985)",..: 1 1 1 1 1 2 2 2 2 2 ... 
$ pop_t   : num 11635 11897 12177 12473 12785 ... 
$ pop_ur   : num 3395 3547 3703 3862 4026 ... 
... 

Wenn Sie schmelzen, dass von Jahr moroccostats.f zu bekommen, Sie bekommen

> str(moroccostats.f) 
'data.frame': 3367 obs. of 3 variables: 
$ year : Factor w/ 91 levels "1960","1961",..: 1 2 3 4 5 6 7 8 9 10 ... 
$ variable: Factor w/ 37 levels "periodframe",..: 1 1 1 1 1 1 1 1 1 1 ... 
$ value : chr "0" "0" "0" "0" ... 

Beachten Sie, dass value ist ein Charakter, weil periodframe ein Faktor war. Ich vermute, was sich geändert hat war, dass von einer Nummer zu einem Zeichen wurde (die "Phase 1 (1965 bis 1985)" -Bits).

Da Sie nur die pop_t und pop_ur und pop_ru Spalten Plotten, ziehen Sie diese aus, bevor

morstats.pop <- melt(moroccostats[c("year","pop_t","pop_ur","pop_ru")], id="year") 

schmelzen, dann haben Sie nicht über Nötigungen zu anderen Abgaben auf irrelevante Spalten zu kümmern.

+0

Es hat gut funktioniert, danke für die Hilfe :) – iouraich

Verwandte Themen