Sie sind nicht angemeldet.

  • Anmelden

Lieber Besucher, herzlich willkommen bei: MastersForum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier 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.