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
--
Richard M?ller . Am Spring 9 . D-58802 Balve
http://www.oeko-sorpe.de - http://www.phytoplankton.info -
http://independent.academia.edu/Richard
Hello,
From ?interp.old
duplicate
character string indicating how to handle duplicate data points.
Possible values are
"error"
produces an error message,
"strip"
remove duplicate z values,
"mean","median","user"
calculate mean , median or user defined function (dupfun) of
duplicate z values.
HTH,
Pascal
Le 13/02/05 16:06, Richard M?ller a ?crit :> 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
>
>
>
>
>
Hello, To average the values of z in case of duplicated x and y, you can use s2 <- aggregate(z ~ x + y, data = sorpe, FUN = mean) Hope this helps, Rui Barradas Em 05-02-2013 07:06, Richard M?ller escreveu:> 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 > > > > >