2016-09-24 3 views
2

Ich versuche die Lösung zu verwenden, die @jlhoward hier bereitgestellt hat, um ein Konturdiagramm in ggplot mit diskret definierten Konturintervallen zu erstellen. Mein Datensatz überschreitet jedoch Null und dies scheint zu verursachen, dass die Farben und Beschriftungen der Werte unter Null außerhalb der Reihenfolge gezeichnet werden.Wie man diskrete gefüllte Konturen, die mit ggplot über Null gehen, plottet?

x<-seq(-11,11,.03)     # note finer grid 
y<-seq(-11,11,.03) 
xyz.func<-function(x,y) {-10.4+6.53*x+6.53*y-0.167*x^2-0.167*y^2+0.0500*x*y} 
gg <- expand.grid(x=x,y=y) 
gg$z <- with(gg,xyz.func(x,y))  # need long format for ggplot 
library(ggplot2) 
library(RColorBrewer)    #for brewer.pal() 
brks <- cut(gg$z,breaks=seq(-50,100,len=6)) 
brks <- gsub(","," - ",brks,fixed=TRUE) 
gg$brks <- gsub("\\(|\\]","",brks) # reformat guide labels 
ggplot(gg,aes(x,y)) + 
    geom_raster(aes(fill=brks))+ 
    scale_fill_manual("Z",values=brewer.pal(6,"YlOrRd"))+ 
    scale_x_continuous(expand=c(0,0))+ 
    scale_y_continuous(expand=c(0,0))+ 
    coord_fixed() 

Dadurch wird dieses Grundstück: this plot

Wie Sie sehen können, die Farben und die Etiketten für die oberen beiden Konturen nach hinten sind. Irgendwelche Vorschläge, wie Sie das beheben können?

Original @jlhoward solution

PS hoffe, dass ich den Link zu den Bildwerken. Es sieht aus wie ich mehr Rufpunkte müssen, bevor ich Bilder in einem Beitrag :(

Antwort

3

umfassen können, wenn Sie die Pausen mit cut erstellen, erhalten Sie automatisch eine factor zurück, durch die Anordnung der Pausen Sie in cut verwendet bestellt. Aber dann brks mit den Anrufen zu gsub Wechsel wandelt brksfactor-character, die alphabetische Ordnung hat Sie konnten den Auftrag mit einem Aufruf an die factor Funktion zurückgesetzt, aber es ist einfacher, nur die Etiketten erstellen Sie innerhalb des ursprünglichen Anruf cut wollen.:

breaks = seq(-50,100,len=6) 

gg$brks = cut(gg$z, breaks=breaks, 
       labels=paste0(breaks[-length(breaks)]," - ", breaks[-1])) 

Jetzt haben Sie anstelle der Standardbeschriftungen, die von erstellt wurden, genau die gewünschten Beschriftungen.

Vergleichen Sie str(gg) mit Ihrer ursprünglichen Methode und der obigen Methode, um zu sehen, dass brks Zeichen in ersterem ist und Faktor in letzterer.

Hier ist die resultierende Handlung. Ich habe mir auch die Freiheit genommen, die Legendenfolge umzukehren, um der Farbreihenfolge in der Handlung zu entsprechen. Dies macht es einfacher, die Beziehung zwischen den Farben und den Wertebereichen zu sehen.

ggplot(gg,aes(x,y)) + 
    geom_raster(aes(fill=brks))+ 
    scale_fill_manual("Z",values=brewer.pal(6,"YlOrRd"))+ 
    scale_x_continuous(expand=c(0,0))+ 
    scale_y_continuous(expand=c(0,0))+ 
    coord_fixed() + 
    guides(fill=guide_legend(reverse=TRUE)) 

enter image description here

Verwandte Themen