Seite 1 von 1

tikz: Gerade an Graph (als .csv eingelesen) zeichnen

Verfasst: Fr 20. Jul 2012, 00:58
von platzhirsch
Hallo Zusammen,

Ich habe mit tikz eine .csv Datei einer DSC Messung wie folgt eingelesen:
% 
\begin{tikzpicture}
		\begin{axis}[scale=1.7,ymin=0,ymax=1.2,xmin=160,xmax=280,grid=major,
			title={},
			xlabel={Temperatur in ${\degree}C$},
			ylabel={Wärmestrom in ${mW}/{mg}$ \quad $\longleftarrow$ exo}]
			\addplot [color=blue,mark=false,smooth,thick] table {dsc/1aufheizung.csv};
		\end{axis}
\end{tikzpicture}
% Ende des Dokumentes 
Nun versuche ich seit einer halben Ewigkeit eine Tangente (Bild im Anhang in rot dargestellt) zu zeichnen. Zusätzlich soll die Fläche, die durch die Tangente und die Kurve eingeschlossen wird, gefüllt werden.

Wenn das dann geklappt hat, würde ich noch gerne die Beschriftung (in rot dargestellt) einfügen.

Muss ich noch mehr aus meinem Dokument posten? Ich habe eine Hauptdatei, da steht ewig viel drin, das wollte ich jetzt nicht alles hier rein hauen.

Ich hoffe mir kann jemand dabei helfen. Danke!

Verfasst: Mo 23. Jul 2012, 09:08
von platzhirsch
UPDATE:

Es sollte nun keine Tangente sein, sondern einfach eine Gerade die als Anfangs- und Endpunkt jeweils einen Punkt auf meinem Graphen hat.

Ich schaffe es nicht in der axis Umgebung eine Gerade nach meinen Koordinaten zu zeichnen. :roll:

Verfasst: Mo 23. Jul 2012, 09:13
von bloodworks
Hi keine Zeit deshalb ohne Minimalbeispiel [2]: such einfach in der pgfplots Doku nach "coordinates".

Verfasst: Mo 23. Jul 2012, 18:15
von platzhirsch
hmm ... da finde ich leider nichts was mir hilft :oops:

Ich kann ja mit \draw eine Linie zeichnen. Nur sind alle Koordinaten (ausser der Nullpunkt) komplett verschieden.
Die Frage ist, wie kann ich mit den Koordinaten zeichnen die meinen Graphen aus der .csv Datei definieren?

Verfasst: Mo 23. Jul 2012, 18:26
von bloodworks
In dem Fall würde ich dir raten ein richtiiges Minimalbeispiel [2] zu machen auf das man das nachvollziehen kann.

Verfasst: Mo 23. Jul 2012, 20:24
von platzhirsch
\documentclass[
    BCOR12mm,
    DIV18,
    headsepline,
    oneside,
    index=totoc,  											
    listof=totoc,												
    bibliography=totocnumbered,
    openany,
    numbers=noenddot,										
    12pt]{scrbook}
\usepackage{pgfplots,pgfplotstable}								
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
      \begin{axis}[scale=1.7,ymin=0,ymax=1.2,xmin=160,xmax=280,grid=major,
         title={},
         xlabel={Temperatur in ${\degree}C$},
         ylabel={Wärmestrom in ${mW}/{mg}$ \quad $\longleftarrow$ exo}]
         \addplot [color=blue,mark=false,smooth,thick] table {dsc/1aufheizung.csv};
      \end{axis}
\end{tikzpicture} 

\end{document}
So sieht das zur Zeit bei mir aus. (Ich hoffe das Beispiel ist so OK)

Jetzt würde ich gerne eine Gerade von den Koordinaten (196.8,0.59) zu (240.77,0.54) ziehen. Die Koordinaten sind aus der Textdatei (csv) mit der ich den Graphen eingelesen habe.

Wenn ich nun mit:
\draw [solid] (196.8,0.59) -- (240.77,0.54)
eine Linie generieren will, dann funktioniert das nicht weil er das mit den Koordinaten nicht versteht :?:

Vielleicht habe ich da auch ein grundsätzliches Verständnisproblem.

Verfasst: Mo 23. Jul 2012, 22:08
von bloodworks
Natürlich nicht du sollst ja auch
\addplot coordinates ...
verwenden so wie es in der pgfplots Dokumentation steht. (s.o.). Wenn du ein ordentliches Minimalbeispiel [2] (<- das ist ein Verweis auf ein Link) liefern würdest, würde ich dir das sogar am lebenden Objekt zeigen.

Verfasst: Mo 23. Jul 2012, 22:44
von platzhirsch
\documentclass[
    BCOR12mm,
    DIV18,
    headsepline,
    oneside, %twoside,
    index=totoc,  											
    listof=totoc,												
    bibliography=totocnumbered,					
    openany,
    numbers=noenddot,										
    12pt]{scrbook} 											

\usepackage[ngerman]{babel}									 
\usepackage[T1]{fontenc}										
\usepackage[latin1]{inputenc}
\usepackage{mathcomp}
\usepackage[thinspace,thinqspace,squaren,textstyle]{SIunits}
\usepackage{pgfplots,pgfplotstable}	
\usepackage{tikz}													
\usetikzlibrary{calc}

\begin{document}

\begin{center}
\begin{tikzpicture}
		\begin{axis}[scale=1.5,ymin=0,xmin=160,xmax=300,grid=major,font=\small,
			title={},
			xlabel={Temperatur in ${\degree}C$},
			ylabel={Wärmestrom in ${mW}/{mg}$ \quad $\longleftarrow$ exo}]
			\addplot [color=blue,mark=false,smooth,thick] table {1aufheizung.csv};
			\coordinate (a) at (196.8,0.59); 
			\coordinate (b) at (240.77,0.54);
			\draw [solid,thin] (a) -- (b);
		\end{axis}
	\end{tikzpicture}
\end{center}


\end{document}
Jetzt müsste es aber funktionieren!?!? (habs getestet)

Also, eine Gerade zwischen 2 Koordinatenpunkten des Graphen zeichnen und diese Fläche dann füllen ...

Danke schonmal für die Mühe ...

Verfasst: Mo 23. Jul 2012, 22:47
von bloodworks
Hallo damit kannst leider nur du was anfangen. Das ist kein Minimalbeispiel [2] (in dem Link folgen: dort steht auch, wie man externe Daten in ein Minimalbeispiel einfügt. ) Zudem wäre es nett, wenn du dir mindestens die Mühe machen würdest die Dokumentationen zu lesen, wenn man dir schon die Stichworte vorkaut:
\documentclass{scrbook}                                   

\usepackage[ngerman]{babel}                      
\usepackage[T1]{fontenc}                               
\usepackage[latin1]{inputenc} 
\usepackage{mathcomp} 
\usepackage[locale=DE]{siunitx}
\usepackage{pgfplots,pgfplotstable}   


\begin{document} 

\begin{center} 
\begin{tikzpicture} 
      \begin{axis}[scale=1.5,ymin=0,xmin=160,xmax=300,grid=major,font=\small, 
         title={},     restrict x to domain*=160:300,
         xlabel={Temperatur in \si{\celsius}}, 
         ylabel={Wärmestrom in   \si{\milli\watt\per\milli\gram} \quad $\longleftarrow$ exo}] 
                 \addplot+[smooth, fill] coordinates { (196.8,0.59)  (240.77,0.54) (200, .7)} --cycle;
      \end{axis} 
   \end{tikzpicture} 
\end{center} 


\end{document}t
Ich habe mir zudem erlaubt, das veraltete SIunits mit siunitx zu ersetzten. Zudem schreibt man einheiten in upright. Immer und überall.

Verfasst: Do 26. Jul 2012, 16:36
von platzhirsch
Danke für die Hilfe. Jetzt kann ich wenigstens mal eine Linie zeichnen. Leider ist das mit dem Füllen noch nicht das was ich brauche.

Ich krieg das mit dem Einbinden der .csv in das Minimalbeispiel nicht hin und muss das jetzt auch bleiben lassen, weil alleine für diesen Graphen schon so viel Zeit drauf gegangen ist, dass es in keiner Relation mehr zum Rest meiner Arbeit steht :roll: