image-plot

Wie erstelle ich Grafiken, was ist zu beachten?

Moderatoren: EDi, jogo

Antworten
janedoe

image-plot

Beitrag von janedoe »

Schönen Sonntagnachmittag,

versuche gerade meine Mittelwerte zu plotten, nur leider bekomme ich immer diese eine Fehlermeldung.

Der Code mit dem ich arbeite

Code: Alles auswählen

library(RSQLite) #DB-Einlesen
m <- dbDriver("SQLite")
con <- dbConnect(m, dbname = "example.sqlite")

alltables <- dbListTables(con) #Ausgabe der vorhandenen Inhalte 
alltables

#Parameter auslesen 
T <- dbGetQuery(con, 'SELECT T2 FROM example_data WHERE "phiG" = :x', params = list(x = seq(48,52)))
phi <- dbGetQuery(con, 'SELECT phiG FROM example_data WHERE "phiG" = :x', params = list(x = seq(48,52)))
lam <- dbGetQuery(con, 'SELECT lam FROM example_data WHERE "phiG" = :x', params = list(x = seq(48,52)))

# verwendete Parameter zusammenfassen
daten <- data.frame(T, phi, lam)
my2num <- function(x) as.numeric(sub(",", ".", x)) #in Zahlen umwandeln 
daten[] <- lapply(daten, my2num)

#Mittelwert berechnen 
mittel_T <- aggregate(T ~ phi + lam, data=daten, FUN=mean)

#Graphik 
image(mittel_T$phi, mittel_T$lam, mittel_T$T)


Diese Fehlermeldung bekomme ich:

Code: Alles auswählen

> Fehler in image.default(mittel_T$phi, mittel_T$lam, mittel_T$T) :
  ansteigende 'x' und 'y' Werte erwartet
> mittel[with(mittel_T, order(lam, phi)), ]
Meine Daten (mittel_T) sehen wie folgt aus:

Code: Alles auswählen

     phi lam T
1   48    15   14
2   48,5    15   1.47
3   49    15   4.5
...
12  48    16   11.0
13  48,5    16   9.4
14  49    16   2.74
...
23  48    17   0.87
24  48,5    17  -0.4
25  49    17   1.15
Liegt es womöglich daran, dass mein phi-Werte nicht aufsteigend sortiert sind?

glg. jane
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: image-plot

Beitrag von jogo »

Hallo Jane,

Du verwendest image() nicht so, wie es die Gebrauchsanweisung vorsieht.
Bitte lies unbedingt nochmal die Dokumentation:

Code: Alles auswählen

?image
lass Dir auch das Beispiel vorführen:

Code: Alles auswählen

example(image)
und schau Dir die dabei verwendeten Daten genau an :!:
mein Beispiel:

Code: Alles auswählen

x <- c(48, 48.5, 49)
y <- 15:17
mittel_T <- expand.grid(phi=x, lam=y)
mittel_T$T <- sample(15:21, 9, rep=TRUE)
# Du muesstest dann einen der beiden Aufrufe verwenden:
image(x=unique(mittel_T$phi), y=unique(mittel_T$lam), z=matrix(mittel_T$T, 3)) #Graphik 
image(x=unique(mittel_T$phi), y=unique(mittel_T$lam), z=matrix(mittel_T$T, 3, byrow=TRUE)) #Graphik 
sicherer aber ist:

Code: Alles auswählen

D <- xtabs(T ~ phi + lam, data=mittel_T)
image(x=as.numeric(dimnames(D)$phi), y=as.numeric(dimnames(D)$lam), D)
Gruß, Jörg
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: image-plot

Beitrag von EDi »

Oder mit ggplot:

Code: Alles auswählen

x <- c(48, 48.5, 49)
y <- 15:17
mittel_T <- expand.grid(phi=x, lam=y)
mittel_T$T <- sample(15:21, 9, rep=TRUE)

library(ggplot2)
ggplot(mittel_T, aes(x = phi, y = lam)) +
  geom_tile(aes(fill = T)) 
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Antworten