Sie sind nicht angemeldet.

  • Anmelden

1

21.11.2011, 00:09

Frage zu R plotting

(sorry für den dritten Hilfethread am heutigen Tag...)

hier gibts doch einige die sich bombe mit R auskennen...hab noch nicht soviel mit individualisierung von komplexeren functions gearbeitet. und zwar folgendes problem: habe mir diese function reingespielt und recht fix ein ganz brauchbares ergebnis bekommen. aber wie zum teufel kann ich mir den wertebereich der x-achse so einstellen, dass die nicht bei 0 sondern erst bei 200 losgeht (oder ja nach achse gänzlich individuell)?

plot sieht einstweilen so aus damit man sich da besser was drunter vorstellen kann:
index.php?page=Attachment&attachmentID=13780

plot wurde mit der plot.depth function so generiert:

#Dataframe

Quellcode

1
2
3
4
5
6
7
8
profile <- data.frame( #
   "tiefe"= tiefe <- seq(0,-361,-19),
   a <- profil1[,6],
   b <- profil2[,6],
   c <- profil3[,6],
   d <- profil4[,6]
   )
(colnames(profile)[2:ncol(profile) ] <- paste("Profil",letters[1:(ncol(profile)-1)]))


#plot

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
par(las=1) # labels on axis
      plot.depth(profile,
        plot.type = c("s","s","s","s") -> type,
        polygon = c(rep(FALSE, 4), TRUE),
        xlabel = paste("Schneedichte [kg/m³]"),
        show.na=TRUE,
        l.width = c(1,1,1,1), # line widths
        lp.color = list(
          "darkblue", # plot 1
          "darkblue", # plot 2
          "darkblue", # plot 3
          "darkblue" # plot 4
        ) # End list
      ) # End plot.depth()



kennst sich da jemand aus damit? und kann vllt ganz kurz durch die oben verlinkte function schauen ob ihm was auffällt? thx!

Zitat

Original von nC_$kittle_
Muss ich dann auch Hitler lieber mögen [...] nur weil er Deutscher ist?

Zitat

Original von CF_Icey
ich hab eine Hakenkreuzfahne über meinem Bett und einen Adolf-Hitler-Schlafanzug mit zugehöriger Bettwäsche

2

21.11.2011, 00:14

Kannst du ein komplett lauffähiges Beispiel anhängen, d.h. mit laden der entsprechenden Pakete und eventuell einem kleinen Beispiel-Datensatz?

3

21.11.2011, 00:26

voila...müsste so hinhauen (vorsicht mit pfadangaben im code)
index.php?page=Attachment&attachmentID=13781

Zitat

Original von nC_$kittle_
Muss ich dann auch Hitler lieber mögen [...] nur weil er Deutscher ist?

Zitat

Original von CF_Icey
ich hab eine Hakenkreuzfahne über meinem Bett und einen Adolf-Hitler-Schlafanzug mit zugehöriger Bettwäsche

Arma

Erleuchteter

Beiträge: 4 643

Wohnort: Hamachi

Beruf: GER

  • Nachricht senden

4

21.11.2011, 00:30

mach doch mit xlim?
SenF aufs Brot - da hast du was drauf

5

21.11.2011, 00:33

Geht wohl nicht, da die Funktion andere Parameter übernimmt.

@Ragna: Hab mir jetzt selbst ne kleine Testversion geschrieben.

6

21.11.2011, 00:34

xlim=c(215:360) scho probiert. meine vermutung: alles was ich zw. plot.depth() reinschreibe unterdrückt/ignoriert wird, was nicht in der function vorkommt (weil auch keine fehlermeldung kam komischerweise) ?(

Zitat

Original von nC_$kittle_
Muss ich dann auch Hitler lieber mögen [...] nur weil er Deutscher ist?

Zitat

Original von CF_Icey
ich hab eine Hakenkreuzfahne über meinem Bett und einen Adolf-Hitler-Schlafanzug mit zugehöriger Bettwäsche

7

21.11.2011, 01:06

Ändere einfach folgende Zeilen in der Funktion plot.depth:

Quellcode

1
2
3
4
5
6
# minimum
ifelse(
  FALSE, # min(data[,draw[i]], na.rm=TRUE) > 0
  x.min <- 0,# 0... max
  x.min <- min(data[,draw[i]], na.rm=TRUE) # min...max
)


D.h., einfach in Zeile 3 das "FALSE, # " vor die Zeile setzen, damit x.min nicht auf 0 sondern auf das Minimum gesetzt wird.

Altrenativ und eleganter kannst du auch folgende beiden Stellen im Code ändern:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
plot.depth <- function(
 data,# data.frame
 xmin, # new function argument, evoke for new global limit
  yaxis.first=TRUE, # is 1st data-column 1st y-axis?
...
# minimum
ifelse(
  missing(xmin), # min(data[,draw[i]], na.rm=TRUE) > 0
  x.min <- min(data[,draw[i]], na.rm=TRUE), # min...max
  x.min <- xmin
)


Zeile 2 ist eingefügt, dann ist nach # minimum die ifelse() neu geschrieben. Wenn du die Funktion mit plot.depth(data) aufrufst, wird das min über die Datensätze genommen (Zeile 9), wenn du sie mit plot.depth(data, xmin=100) aufrufst, wird 100 als globales x-Minimum genommen (xmin vorhanden => Zeile 10).

8

21.11.2011, 01:20

wahnsinn!!!! dank dir!!!! :hail: bin da echt über 2 stunden lang dran verzweifelt...sieht nu perfekt aus!

wenn du dir bissle fame einheimsen möchtest: "Suggestion to improve this function will be always welcome: andreas minus plank at gmx dot de (Andreas Plank) 2008/12/05"

imo eine ziemliche schwachstelle in dieser function, dass das nicht von haus aus so drin ist...

danke!

Zitat

Original von nC_$kittle_
Muss ich dann auch Hitler lieber mögen [...] nur weil er Deutscher ist?

Zitat

Original von CF_Icey
ich hab eine Hakenkreuzfahne über meinem Bett und einen Adolf-Hitler-Schlafanzug mit zugehöriger Bettwäsche

9

21.11.2011, 09:25

Schick es ihm ruhig, dann aber die zweite Variante. Wegen so kleinen Änderungen schreibe ich niemanden ne eMail - ansonsten würde ich dauernd welche schreiben.

Beiträge: 2 917

Wohnort: Seehausen am Staffelsee

Beruf: Statistiker

  • Nachricht senden

10

22.11.2011, 10:22

bei fragen gerne mail an philipp.probst@tu-dortmund.de, schaue hier zu selten rein...
live is live, nana nanana :D

Zitat

Original von -=)GWC(RaMsEs
von 50k könnte ich in münchen nicht mehr leben.