Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 27

Thema: latex-Berechnungen (für automatisches Histogramm)

  1. #1
    Registrierter Benutzer
    Registriert seit
    09.06.2007
    Beiträge
    338

    latex-Berechnungen (für automatisches Histogramm)

    Hallo!

    Diesmal hab ich glaub ich ein echt kompliziertes Problem...

    Wie in diesem Thread beschrieben, versuche ich mit pstricks Histogramme zu erzeugen. Zunächst wollte ich die Daten, die den Histogrammen zu Grunde liegen, auch gleich in pstricks auswerten, das scheint aber nicht möglich zu sein???

    Jdfs. habe ich die Daten nun mit [R] ausgewertet, und damit Textdateien erzeugt, die jeweils mehrere hundert Zeilen dieser Bauart enthalten

    Beispiel - Daten
    Code:
    60 5633
    70 4675
    80 5199
    90 5083
    100 4352
    110 4057
    Nun zu meinem Problem:
    Ich muss sehr viele Histogramme dieser Art erstellen, und jedes der Histogramme hat unterschiedliche x- und y-Werte. Da auf jeden Fall damit zu rechnen ist, dass die x- und y-Werte sehr groß sind, müsste ich stets mittels \psset{xunit=...,yunit=...} die Grafik entsprechend skalieren. Außerdem muss die Achsenbeschriftung angepasst werden.

    Diese Vorgänge würde ich gerne automatisieren.

    So sieht ein Histogramm-Skelett aus, das im Prinzip lauffähig ist:

    Beispiel - Histogramm-Skelett
    Code:
    %
    % Histogramm
    %
    \documentclass{scrartcl}
    \usepackage[latin1]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage[naustrian]{babel}
    
    % Daten erzeugen
    \usepackage{filecontents}
    
    \begin{filecontents}{a1.txt}
    1 5
    2 4
    3 8
    4 9
    8 8
    \end{filecontents}
    % Daten wurden erzeugt
    
    \usepackage{pstricks}
    \usepackage{pstricks-add}
    
    \begin{document}
    \readdata{\data}{a1.txt}
    
    \begin{pspicture}(-1,-1)(11,11)
    \psset{xunit=1,yunit=1}
    \psaxes[Dx=1,Dy=1](10,10)
    \listplot[plotstyle=bar]{\data}
    \end{pspicture}
    \end{document}
    Um den Vorgang zu automatisieren, würde ich aber so etwas brauchen:

    Beispiel - Histogramm-Wunschvorstellung
    Code:
    %
    % Histogramm
    %
    \documentclass{scrartcl}
    \usepackage[latin1]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage[naustrian]{babel}
    
    \usepackage{pstricks}
    \usepackage{pstricks-add}
    
    \begin{document}
    \readdata{\data}{a1.txt}
    
    \begin{pspicture}(-1,-1)(11,11)
    
    % Variablen errechnen
    \newcommand{\maxx}{ARGMAX-x-Werte aus data}
    \newcommand{\maxy}{ARGMAX-y-Werte aus data}
    
    \newcommand{\xunitvalue}{größter im pspicture definierter x-Wert/\maxx}
    \newcommand{\yunitvalue}{größter im pspicture definierter y-Wert/\maxy}
    
    \newcommand{\dxvalue}{\xunitvalue gerundet}
    \newcommand{\dyvalue}{\yunitvalue gerundet}
    % Variablen sind errechnet
    
    \psset{xunit=\xunitvalue,yunit=\yunitvalue}
    \psaxes[Dx=\dxvaue,Dy=\dyvalue](\maxx,\maxy)
    \listplot[plotstyle=bar]{\data}
    \end{pspicture}
    \end{document}
    Die rot markierten Werte müsste ich erst ausrechnen und ich weiß nicht wie das geht.

    Ist das möglich das zu machen?
    Geändert von Spindoctor (26-02-2009 um 19:27 Uhr) Grund: Fehler korrigiert

  2. #2
    Registrierter Benutzer Avatar von mechanicus
    Registriert seit
    10.07.2008
    Ort
    Hamburg
    Beiträge
    3.944
    Zitat Zitat von Spindoctor Beitrag anzeigen
    Zunächst wollte ich die Daten, die den Histogrammen zu Grunde liegen, auch gleich in pstricks auswerten, das scheint aber nicht möglich zu sein???
    Hallo,

    bitte nicht falsch verstehen, möglich mit Sicherheit, Ich weiß leider gerade nur nicht wie.
    Aber ich lese.

    Gruß
    Marco

  3. #3
    Registrierter Benutzer
    Registriert seit
    09.06.2007
    Beiträge
    338
    Danke, mechanicus!

    Weiß das zu schätzen.

    Hab natürlich auch schon im pstricks-manual und im pstricks-add-manual nachgelesen. Dort habe ich allerdings nichts diesbezügliches gefunden.

    Ist aber eh fraglich ob die Auswertung NUR mit pstricks und LaTeX sinnvoll ist, schließlich handelt es sich bei beidem um kein Statistik-Programm.

    Was die hier beschriebenen Probleme betrifft ist es allerdings sicher sinnvoll, das in LaTeX bzw. pstricks zu machen.

  4. #4
    Registrierter Benutzer
    Registriert seit
    17.04.2008
    Beiträge
    24

    Lightbulb

    Hi Spindoctor,

    ich hab schon verstanden, dass Du eigentlich PSTricks möchtest - aber (konnte ich aus Zeitgründen nich testen) mit PICTEX (m-pictex) sollte das wie folgt gehen:
    Code:
    \[
    \beginpicture
    \setcoordinatesystem units <4mm,12mm>
    \setplotarea x from 147.5 to 190, y from 0 to 6
    \axis bottom invisible ticks numbered at 150 155 160 165
    170 175 180 / /
    \axis left ticks numbered at 1 2 3 4 5 / /
    \sethistograms
    \plot 147.5 0 150 0 155 5 160 4 165 1
    170 4 175 3 180 1 182.5 0 /
    \put {$\scriptstyle\blacktriangleright$} at 182.5 0
    \put {$\scriptstyle\blacktriangle$} at 147.5 6
    \put {Anzahl der Daten} at 150 6.5
    \put {\lines {K{\"o}rpergr{\"o}{\ss}e\cr in cm}} at 188 0
    \endpicture
    \]
    Vielleicht hilft das ja?

    Gruß,

    Barry1

  5. #5
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von Spindoctor Beitrag anzeigen
    Diesmal hab ich glaub ich ein echt kompliziertes Problem...

    Wie in diesem Thread beschrieben, versuche ich mit pstricks Histogramme zu erzeugen. Zunächst wollte ich die Daten, die den Histogrammen zu Grunde liegen, auch gleich in pstricks auswerten, das scheint aber nicht möglich zu sein???

    Jdfs. habe ich die Daten nun mit [R] ausgewertet, und damit Textdateien erzeugt, die jeweils mehrere hundert Zeilen dieser Bauart enthalten

    Beispiel - Daten
    Code:
    60 5633
    70 4675
    80 5199
    90 5083
    100 4352
    110 4057
    Nun zu meinem Problem:
    Ich muss sehr viele Histogramme dieser Art erstellen, und jedes der Histogramme hat unterschiedliche x- und y-Werte. Da auf jeden Fall damit zu rechnen ist, dass die x- und y-Werte sehr groß sind, müsste ich stets mittels \psset{xunit=...,yunit=...} die Grafik entsprechend skalieren. Außerdem muss die Achsenbeschriftung angepasst werden.

    Diese Vorgänge würde ich gerne automatisieren.

    Ist das möglich das zu machen?
    Es ist auf dem von die geschilderten Weg nur mit großem Aufwand möglich,
    da man schon auf TeX-Ebene den größten Wert kennen müsste. Du kannst
    aber einfach ein Script über deinen Datensatz laufen lassen, welches dann
    einfach die maximalen Werte in eine eigene Mini-TeX-Datei schreibt:

    Code:
    \documentclass{scrartcl}
    \usepackage[latin1]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage[naustrian]{babel}
    \usepackage{filecontents}
    
    \begin{filecontents}{a1.txt}
    1 5
    2 4
    3 8
    4 9
    8 8
    \end{filecontents}
    \begin{filecontents}{a2.tex}
    \def\MaxX{8}\def\MaxY{9}
    \end{filecontents}
    
    \usepackage{pstricks}
    \usepackage{pstricks-add}
    
    \begin{document}
    \readdata{\data}{a1.txt}
    \input{a2}
    
    \psset{llx=-1cm,lly=-11cm}
    \begin{psgraph}(0,0)(\MaxX,\MaxY){10cm}{7cm}
    \psaxes(\MaxX,\MaxY)
    \listplot[plotstyle=bar]{\data}
    \end{psgraph}
    
    \end{document}
    Herbert

  6. #6
    Registrierter Benutzer
    Registriert seit
    09.06.2007
    Beiträge
    338
    Vielen Dank für die Antworten, und entschuldigung, dass ich erst so spät drauf reagier.

    @ Barry1
    PicTeX kannte ich bisher noch nicht. so weit ich gesehen habe, gibt es allerdings kein Manual für dieses Package, oder?
    Grundsätzlich hab ich auch nichts gegen andere Grafik-Packages als pstricks (mit dem kenn ich mich nur mittlerweile am besten aus) aber mir ist die Vielfältigkeit wichtig. Weil ein Histogramm erstellen und als eps abspeichern kann ich in [R] auch. Und das Fehlen eines Manuals schränkt die Vielfältigkeit von PicTeX für mich schon ein...
    Danke trotzdem.

    @ voss
    hm, ok, argmax und argmin operationen sind wohl kompliziert in TeX...
    im Prinzip macht das nicht so viel, weil ich ja ohnehin schon [R] bemühen muss.
    Und [R] kann selbstverständlich auch argmin und argmax Operationen ausführen. Außerdem soll [R] angeblich auch sehr gut mit LaTeX zusammenarbeiten - es sollte also möglich sein, ein .tex-File zu erstellen, dass die notwendigen Variablen definiert.
    Dieses Dokument könnte ich dann über \input hereinholen.

    Nur ein Problem bliebe bestehen:
    bei \psaxes möchte ich gerne die Abstände der Ticks auf einen vernünftigen Wert bringen. Vernünftig wäre für mich

    größter im pspicture definierter x-Wert/\maxx (Allerdings gerundet)
    bzw.
    größter im pspicture definierter y-Wert/\maxy (Allerdings gerundet)
    (siehe weiter unten)

    Gibt es also eine Möglichkeit in LaTeX mittels calc oder pstricks oder einem anderen Paket zu runden?

    Danke im Voraus,

    Spin

  7. #7
    Registrierter Benutzer Avatar von mechanicus
    Registriert seit
    10.07.2008
    Ort
    Hamburg
    Beiträge
    3.944
    Hallo,

    eine Möglichkeit wäre das Paket fp. Hier gibt es die Option FPround.

    Gruß
    Marco

  8. #8
    Registrierter Benutzer
    Registriert seit
    09.06.2007
    Beiträge
    338
    klingt gut!

    Gibt es wo eine Anleitung für dieses Paket?

  9. #9
    Registrierter Benutzer Avatar von mechanicus
    Registriert seit
    10.07.2008
    Ort
    Hamburg
    Beiträge
    3.944

  10. #10
    Registrierter Benutzer
    Registriert seit
    09.06.2007
    Beiträge
    338

    Arrow Lösung

    Hallo nochmal!

    Muss mich abermals entschuldigen für die späte Antwort.
    Habe eine zeitlang (zugegeben nicht die ganze Zeit bis jetzt) gebraucht, um mich mit dem fp-Paket anzufreunden. Die Dokumentation ist ja sehr kurz gehalten.

    Mittlerweile bin ich aber einer Lösung schon sehr nahe.

    Ich lass es Euch wissen, wenn sie fertig ist.

    Danke bis auf weiters für die Hilfe...

  11. #11
    Registrierter Benutzer
    Registriert seit
    09.06.2007
    Beiträge
    338

    Smile Lösung!

    Hier ein erster Lösungsansatz.
    Funktioniert schon recht gut - vielleicht kann man noch einiges verbessern...
    Verbesserungsvorschläge sind willkommen.

    Mit [R] lasse ich mir ein .tex-File erstellen, in dem folgende Variablen definiert werden:

    • \data im Stil
      x1 y1
      x2 y2
      etc.
    • \xmax (größter x-Wert)
    • \ymax (größter y-Wert)
    • \xstep (Abstand zwischen 2 x-Werten)

    Ein File könnte dann also so aussehen
    Code:
    \newcommand{\data}{%
    60 5633
    70 4675
    80 5199
    90 5083
    100 4352
    110 4057
    120 4078
    }%
    \newcommand{\xmax}{120}
    \newcommand{\ymax}{5633}
    \newcommand{\xstep}{10}
    Hier ist nun das LaTeX-fp-PSTricks-Script, das aus diesen Daten ein ganz hübsches Histogramm zaubert.
    Code:
    %
    % Histogramm-Test
    %
    \documentclass{scrartcl}
    \usepackage[latin1]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage[naustrian]{babel}
    
    \usepackage{fp}
    \usepackage{pstricks}
    \usepackage{pstricks-add}
    
    \begin{document}
    
    \input{daten.tex}
    
    % Größe des Histogramms gesamt
    \newcommand{\xpsgraph}{15}
    \newcommand{\ypsgraph}{11}
    
    % Reserve für Rand
    \newcommand{\xreserve}{2.5}
    \newcommand{\yreserve}{1.5}
    
    % Korrektur von xmax um 0,5 * xstep
    \FPdiv{\xstephalbe}{\xstep}{2}
    \FPadd{\xmax}{\xmax}{\xstephalbe}
    
    % Größe des Histogramms - Reserve für Rand
    \FPsub{\xdiagram}{\xpsgraph}{\xreserve}
    \FPsub{\ydiagram}{\ypsgraph}{\yreserve}
    
    % Breite der Histogrammbalken
    \FPdiv{\xlength}{\xmax}{\xstep}
    \FPdiv{\mybarwidth}{\xdiagram}{\xlength}
    
    % Maximal [Größe des Histogramms]-Beschriftungen auf x- und y-Achse
    \FPdiv{\xticks}{\xmax}{\xdiagram}
    \FPdiv{\yticks}{\ymax}{\ydiagram}
    
    % Weitere Reduktion der Beschriftungen um Faktor [Zahl]
    \FPdiv{\xticks}{\xticks}{10}
    \FPdiv{\yticks}{\yticks}{10}
    
    % Runden
    \FPround{\xticks}{\xticks}{0}
    \FPround{\yticks}{\yticks}{0}
    
    % Wieder aufblasen
    \FPmul{\xticks}{\xticks}{10}
    \FPmul{\yticks}{\yticks}{10}
    
    % Runden
    \FPround{\xticks}{\xticks}{0}
    \FPround{\yticks}{\yticks}{0}
    
    \psset{llx=- \xreserve cm,lly=- \yreserve cm}
    \begin{psgraph}[Dx=\xticks,Dy=\yticks](0,0)(\xmax,\ymax){\xdiagram cm}{\ydiagram cm}
    \listplot[linestyle=solid,plotstyle=bar,barwidth=\mybarwidth cm,fillcolor=blue,fillstyle=none]{\data}
    \end{psgraph}
    
    \end{document}

  12. #12
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von Spindoctor Beitrag anzeigen
    Hier ein erster Lösungsansatz.
    Funktioniert schon recht gut - vielleicht kann man noch einiges verbessern...
    Verbesserungsvorschläge sind willkommen.

    Mit [R] lasse ich mir ein .tex-File erstellen, in dem folgende Variablen definiert werden:

    • \data im Stil
      x1 y1
      x2 y2
      etc.
    • \xmax (größter x-Wert)
    • \ymax (größter y-Wert)
    • \xstep (Abstand zwischen 2 x-Werten)

    Ein File könnte dann also so aussehen
    Code:
    \newcommand{\data}{%
    60 5633
    70 4675
    80 5199
    90 5083
    100 4352
    110 4057
    120 4078
    }%
    \newcommand{\xmax}{120}
    \newcommand{\ymax}{5633}
    \newcommand{\xstep}{10}
    Hier ist nun das LaTeX-fp-PSTricks-Script, das aus diesen Daten ein ganz hübsches Histogramm zaubert.
    Warum lässt du R nicht gleich Runden, also
    Code:
    \def\xmax{150}
    \def\ymax{6000}
    oder was imemr du auch gerundet haben willst.

    Herbert

  13. #13
    Registrierter Benutzer
    Registriert seit
    09.06.2007
    Beiträge
    338
    Wenn ich in [R] runden würde, müsste ich noch mehr Variablen dort definieren.

    Weil ich nämlich nicht die max-Werte runden will, sondern die Abstände der Beschriftungen.

    Die Beschriftungen sollen nämlich nicht so zahlreich sein, dass sie sich gegenseitig "auf die Füße treten" andererseits aber auch keine "unrunden" Werte sein (also immer in hübschen Vielfachen von 10 o.ä.).

    Eine andere Frage:

    Wieso lässt sich die psgraph-Umgebung nicht von pst-pdf kompilieren?

    P.S.: Wenn jemand das [R]-Script will, stell ichs gern zur Verfügung...
    Geändert von Spindoctor (05-03-2009 um 19:49 Uhr) Grund: p.s.

  14. #14
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von Spindoctor Beitrag anzeigen
    Eine andere Frage:

    Wieso lässt sich die psgraph-Umgebung nicht von pst-pdf kompilieren?
    http://tug.org/mailman/htdig/pstricks/2008/005101.html

    Herbert

  15. #15
    Registrierter Benutzer
    Registriert seit
    09.06.2007
    Beiträge
    338
    cool danke

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •