Hello,
I have a long list of x-, y- and z-data and try to generate a heatmap.
Obviously there are several data with identical x- and y-values. I get
the following error message:
Error in interp.old(x, y, z, xo = xo, yo = yo, ncp = 0, extrap = extrap, :
duplicate data points: need to set 'duplicate = ..'
Unfortunately there seems no help screen on "duplicate". I'd prefer to
average the z-values in case there are identical x/y-values. Is that
possible?
If necessary for an answer I'll copy the short script below.
Thanks for helping!
Richard
----%----
#RM?u 5.2.2013, r.mueller at oeko-sorpe.de
require(akima) # Das Paket akima wird ben?otigt, um
# nicht vorhandene Punkte zu interpolieren# und einen sch?onen
Farbgradienten hinzukriegen
sorpe <- read.csv("bis_130204-korr.csv")
pdf("sorpe.pdf") # Es wird nicht auf den Bildschirm gezeichnet,
# sondern ein PDF-Dokument erstellt.
zr <- range(290,220) # Hier wird der Bereich f?ur die z-Werte# festgelegt:
plot(ylim = c(7.9, 8), # Der Bereich der Achsen wird definiert
xlim = c(51.30, 51.4),
x ~ y, # Es soll ein x-y-Diagramm werden
sorpe,
# Aufruf der x-, y-, z-Tabelle
pch = NA) # Die Punkte f?ur die x-y-Wertepaare sollen unsichtbar sein (?NA?)
sorpe.li <- interp(sorpe$x, sorpe$y, sorpe$z)
# Hier werden die fehlenden Punkte interpoliert
image(sorpe.li, # In das Diagramm wird ein Rasterbild aus den
interpolierten Werten gezeichnet
zlim = zr, # Der vorher definierte Wertebereich wird aufgerufen
col = rev(rainbow( # Ein in R vordefiniertes Farbmodell wird verwendet
30, start = 0, end = 8/12)),
# mit 30 Farbabstufungen, die den z-Werten zugeordnet werden.
add = TRUE) # Das Bild wird ?uber das bereits Vorhandene# gezeichnet
contour(sorpe.li, # Isohypsen werden eingezeichnet
add = TRUE)
points(sorpe, # Die urspr?unglichen Messpunkte werden
pch = 1) # eingezeichnet, und zwar als Kreise