PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verbesserungsvorschläge für ein Diagramm



NeedHelp
13-12-2010, 12:17
Hallo Leute,

Ich habe lange, lange gebraucht, aber im Endeffekt habe ich mit Latex ein Diagramm zeichnen können.

Es sieht wiefolgt aus
http://img210.imageshack.us/img210/9202/diagrammc.jpg

Den zugehörigen LatexCode habe ich in einer Textdatei an das Ende dieses Postings gepackt.

Was muss ich an meinem Code ändern, damit ich
a.) die Linienart von Rolloverunfällen ändern kann
b.) die Legende nach Aussen verschoben wird
c.) eine Bildunterschrift bekomme

vielen herzlichen Dank

Grüße

LuPi
13-12-2010, 13:10
Leider keine Antwort auf Deine Frage, eher ein Vorschlag für die Zukunft: Du tust Dich sicherlich leichter, wenn Du auf ein anderes Tool innerhalb von LaTeX umsteigst. Hierfür stehen insbesondere TikZ/PGF (mit pgfplots, speziell für derartige Grafiken gedacht) und pstricks zur Verfügung.

bobmalaria
13-12-2010, 13:33
hi,

auf jeden fall wechseln! das ist ja grausam das so zu machen. lebenszeit die dir keiner zurueckgibt :eek:

schau dir das pgfplots packet an. da kann man ganz einfach daten hinzufuegen oder sogar aus einer datei oder tabelle auslesen. die linienfarben sind mit befehlen usw. einstellbar.

gruss

voss
13-12-2010, 14:39
Ich habe lange, lange gebraucht, aber im Endeffekt habe ich mit Latex ein Diagramm zeichnen können.

Den zugehörigen LatexCode habe ich in einer Textdatei an das Ende dieses Postings gepackt.

Was muss ich an meinem Code ändern, damit ich
a.) die Linienart von Rolloverunfällen ändern kann
b.) die Legende nach Aussen verschoben wird
c.) eine Bildunterschrift bekomme


Du hast das mit irgendeinem externen Tool gemacht, was man dem Code
ansieht, der extrem unübersichtlich ist. Das geht erheblich einfacher:
http://tug.org/PSTricks/main.cgi?file=pst-plot/DataExamples

Herbert

NeedHelp
13-12-2010, 15:23
Du hast das mit irgendeinem externen Tool gemacht, was man dem Code
ansieht, der extrem unübersichtlich ist. Das geht erheblich einfacher:
http://tug.org/PSTricks/main.cgi?file=pst-plot/DataExamples

Herbert

richtig, ich habe gnuplot benutzt, ich dachte, dass sei stand der technik für sowas. diese beispiele hatte ich auch gefunden, nur habe ich diese nicht auf meine werte anpassen können. ich hatte immer das problem, dass die von mir gewählte dimension zu groß war. wenn der aufwand nicht allzu groß ist, könnte jemand dann die werte aus meiner csv-datei in das bsp einbauen?

vielen lieben dank
grüße

Curryhunter
13-12-2010, 16:46
Hallo,
die angesprochenen Änderungen gehen auch mit gnuplot recht einfach. Das angegebene Beispiel sollte bei aktiviertem -shell escape (oder enable write 18) ein pdf mit 2 Diagrammen ausgeben. Das erste wäre dein Datensatz mit anders positionierter Legende sowie de Möglichkeit die Linienart zu ändern.
Ansonsten sei dir ein Blick in die gnuplot-Doku bzw. die FAQ empfohlen:
http://t16web.lanl.gov/Kawano/gnuplot/index-e.html

Grüße
Stefan

P.S. Ich hab mich mal in pgfplots, tikz und so versucht einzuarbeiten, aber es nie hinbekommen, eine Datendatei (Messwerttabelle) einzulesen und es dann aufgegeben. Momentan wegen zu wenig Zeit und mangelndem Bedürfnis gucke ich mir das auch nicht mehr an. Mit gnuplot bekomme ich das, was ich brauche, auch alles hin.


\documentclass{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage[usenames]{color}
\usepackage[miktex]{gnuplottex}
\usepackage{epstopdf}
\usepackage{siunitx}

% GNUPLOT required
\begin{document}
\pagestyle{empty}
\begin{figure}[!ht]
\begin{gnuplot}[terminal=epslatex]
# datenseparator ist das ;-Zeichen
set datafile separator ";"
# fehlende Daten werden durch ? gekennzeichnet
set datafile missing "?"
#Format der Zahlen: "$%g$" bedeutet floatingpoint-Zahlen (kürzeste Version), es gibt noch %f, %e, %E (exponential), %t (log to base 10)
set format xy "$%g$"
# Benennung des Diagrammtitels und der Achsen, durch \\ mehrere Zeilen möglich, auch Drehen ist möglich
set title 'Trend der Todesfälle bei Rollover, Front- und Seitenkollisionen'
set xlabel 'Jahr'
set ylabel 'Todesfälle'
# Setzen der x-Achsen-Breite
set xrange [2000:2008]
set yrange [2000:10000]
# Nur Titel benannter Plots werden ausgegeben
set key noautotitle
# Position der Legende: "set key (left right top bottom outside below)" Kombinationen davon sind möglich
#set key outside #setzt die legende ausserhalb des Diagramms
set key below #setzt die legende unterhalb des Diagramms
# Aufruf der Messdaten
plot 'Daten.csv' u 1:2 title 'Rollover' with lines 1, 'Daten.csv' using 1:3 title 'Frontalkollisionen' with lines 2, 'Daten.csv' using 1:4 title 'Seitenkollisionen' with lines 3
\end{gnuplot}
\caption{Tote bei Verkehrsunfällen}
\end{figure}
\newpage
\begin{figure}[!ht]
\begin{gnuplot}[terminal=epslatex]
test
\end{gnuplot}
\end{figure}
\end{document}

bobmalaria
13-12-2010, 16:50
hi,

ich würde sowas machen


\documentclass{article}
\usepackage{pgfplots}
\begin{document}


\begin{tikzpicture}
\begin{axis}[
ylabel= Anzahl der Toten,
xlabel= Jahr,
x tick label style={
/pgf/number format/1000 sep=}
]
\addplot table[x=Jahr, y=Rollover] {daten2.csv};
\addlegendentry{Rollover}
\addplot table[x=Jahr, y=Frontal] {daten2.csv};
\addlegendentry{Frontal}
\addplot table[x=Jahr, y=Seite] {daten2.csv};
\addlegendentry{Seite}
\end{axis}
\end{tikzpicture}

\end{document}

dazu habe ich die vorhandene csv datei schnell mgespeichert in eine leerzeichen seperierte liste anstatt tab. dannach ging es problemlos.

gruss

voss
13-12-2010, 17:03
richtig, ich habe gnuplot benutzt, ich dachte, dass sei stand der technik für sowas. diese beispiele hatte ich auch gefunden, nur habe ich diese nicht auf meine werte anpassen können. ich hatte immer das problem, dass die von mir gewählte dimension zu groß war. wenn der aufwand nicht allzu groß ist, könnte jemand dann die werte aus meiner csv-datei in das bsp einbauen?


der LaTeX-Export von gnuplot ist Müll!


\documentclass[12pt,a4paper]{article}

\usepackage{pst-plot}
%\usepackage{auto-pst-pdf}

\begin{document}

%\begin{postscript}
\readdata[ignoreLines=1]\data{daten.csv}
\pstScalePoints(1,1){2000 sub}{1000 div}
\psset{ylabelFactor=\cdot10^3,
labelFontSize=\scriptstyle,
xAxisLabel=Jahr,xAxisLabelPos={4,-1},
yAxisLabel=Tote,yAxisLabelPos={-1.2,5},llx=-1,lly=-1}
\begin{psgraph}[
axesstyle=frame,
showorigin,
linewidth=1pt,
ticks=all,
Ox=2000,
Dy=2,
ticksize=0 4pt,
](0,0)(8,10){8cm}{6cm}
\psset{linewidth=1.5pt}
\listplot[plotNo=1,plotNoMax=3,linecolor=red]{\data}
\listplot[plotNo=2,plotNoMax=3,linecolor=green]{\data}
\listplot[plotNo=3,plotNoMax=3,linecolor=blue]{\data}
\end{psgraph}
%\end{postscript}

\end{document}


Alle % auskommentieren, wenn du pdflatex laufen lassen willst, sonst
latex->dvips->ps2pdf

Herbert

NeedHelp
13-12-2010, 18:04
grandios...

@bobmalaria: wäre es möglich, dass du die von dir erzeugte csv-datei auch anhängst. ich bekomme über 100 Fehler, wenn ich meine vorhandene durch tab getrennte datei dahingehend ändere, dass sie mit leerzeichen getrennt wird.

dankeschön

bobmalaria
13-12-2010, 20:07
hi,

ich habe die datei oben in den post mit eingefügt. letzten endes kannst du auch eine einfache ascii datei produzieren. mit open office calc oder ähnlichem hat man auch gute kontrolle über den export. mit excel muss man eventuell noch nacharbeiten.

gruss

NeedHelp
14-12-2010, 13:22
Ganz große Klasse :) vielen herzlichen Dank.