PDF und CDF Plots Probleme

Tabellen und Grafiken erstellen und anordnen


Stas

PDF und CDF Plots Probleme

Beitrag von Stas »

Hallo

Ich fange an jetzt meine Bachelorarbeit zu schreiben und würde diese mit Latex schreiben. Allerdings habe ich Probleme mit der Darstellung von CDF und PDF Plots. Ich hätte gerne, dass diese wie folgt aussehen:



Die Datenreihen aus .txt-Datei sind meist nur 1/2 Spalte sortiert und wie folgt:
RSRP	ggf.%Spalte
-140	0,083333
-139	0,166666
-136	0,25
-130	0,3333
-121	0,41666
-102	0,5
-101	0,58333
-100	0,6666
-100	0,75
-100	0,83333
-60	0,91666
-45	1
Es wäre auch kein Problem eine Y Spalte hinzuzufügen mit %-ten Anteil falls es nicht möglich ist in Latex PDF und CDF Plots direkt zu erstellen.
Dabei sollte es möglich sein mehrere Datenreihen in 1 Diagramm zu plotten.
Ansätze bis jetzt zeigen wenig Erfolg :/
xmin = - 140
xmax = -30
ymin = 0
ymax = 1
ytick distance=0,1
zwei Mal \begin{axis} mit axis y line*=right, und einmal ohne für CDF und PDF in einen Plot
\addplot[color = red] table {text.txt};

Ich hoffe Ihr könnt mir helfen. Die Plots in Latex sehen so viel besser aus als in Excel, wenn man es schafft :)

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Re: PDF und CDF Plots Probleme

Beitrag von Bartman »

Bild
Stas hat geschrieben:Ansätze bis jetzt zeigen wenig Erfolg
Dann zeige den Lesern Deines Threads wenigstens ein Beispiel Deiner Ansätze.
Dateianhänge
pdfcdfplot.png
pdfcdfplot.png (637.06 KiB) 2108 mal betrachtet

Stas

PDF und CDF Plots Probleme

Beitrag von Stas »

Hay,

es ist wohl nicht möglich ein CDF und PDF plot direkt zu erstellen :/ Würde aber jetzt trotzdem gerne es so aussehen lassen wie im Beispiel darüber. Was noch nicht stimmt ist:

- Achsenbeschriftung nicht oben und falsch gedreht
- Legende mit schrift und d. Bild unten links
- die x Achsenbeschriftung ist Mitte im labelbeschriftung
- pfeil oben rechts auf der Achse
- überstehende ticks :/

\documentclass[paper=a4,12pt,version=last,landscape]{scrartcl}
 
\usepackage{pgfplots}
 
\begin{document}
\centering
	\begin{tikzpicture}		
		\begin{axis}[
		axis y line=right,
		ymin=0, ymax=1, ytick distance=0.1,
		xminorgrids=true, ymajorgrids=true,
		minor x tick num=1,
		bar width=20pt,
		ybar,
		%Anpassen
		width=0.8\textwidth,
		height=0.3\textwidth, 
		xmin=-135, 
		xmax=-45,
		xtick distance=10,
		xlabel={RSRP [dBm]},
		ylabel={CDF},
		xticklabels={,
			$<=-130$,
			$>-130$ bis $<=-120$,
			$>-120$ bis $<=-110$,
			$>-110$ bis $<=-100$,
			$>-100$ bis $<=-90$,
			$>-90$ bis $<=-80$,
			$>-80$ bis $<=-70$,
			$>-70$ bis $<=-60$,
			$>-60$ bis $<=-50$,
		},
		x tick label style={rotate=-30, anchor=west, align=left},
		]
		
		\addplot +[color=black!30] table[x=Upper, y=prPF] {test.txt};
		
		\end{axis}
		
	
	\begin{axis}[
	width=0.8\textwidth,
	height=0.3\textwidth,
	ymin=0, 
	ymax=1,
	ytick distance=0.1,
	xmin=-135, 
	xmax=-45,
	xtick distance=10,
	ylabel={PDF},
	xticklabels={},
	]			
	
	\addplot +[mark=x,mark options={scale=2,solid}, color=black] table[x=Upper, y=prCF] {test.txt};			
	
	\end{axis}
		
	\end{tikzpicture}
\end{document}
Upper	CF	prCF	PF	prPF
-130	9	0.000329441	9	0.000329441
-120	178	0.006515612	169	0.006186171
-110	1735	0.063508913	1557	0.056993301
-100	7007	0.256488158	5272	0.192979245
-90	14772	0.540722574	7777	0.28467367
-80	20934	0.766279878	6171	0.225886745
-70	25259	0.924594604	4337	0.158753981
-60	26990	0.987957099	1731	0.063362495
-50	27319	1	329	0.012042901
-40	27319	1	0	0
-30	27319	1	0	0
Bild
Dateianhänge
stasCdfplot.png
stasCdfplot.png (42.94 KiB) 2053 mal betrachtet

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Mein Beispiel ist keine Lösung, es enthält lediglich ein paar Anpassungen:
\begin{filecontents}{test.txt}
Upper CF prCF PF prPF
-130 9 0.000329441 9 0.000329441
-120 178 0.006515612 169 0.006186171
-110 1735 0.063508913 1557 0.056993301
-100 7007 0.256488158 5272 0.192979245
-90 14772 0.540722574 7777 0.28467367
-80 20934 0.766279878 6171 0.225886745
-70 25259 0.924594604 4337 0.158753981
-60 26990 0.987957099 1731 0.063362495
-50 27319 1 329 0.012042901
-40 27319 1 0 0
-30 27319 1 0 0 
\end{filecontents}

\documentclass[border=5pt]{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=1.14}

\usepgfplotslibrary{units}
 
\begin{document}
   \begin{tikzpicture}      
      \begin{axis}[
      scale only axis,
      axis y line=right,
      ymin=0, ymax=1, ytick distance=0.1,
      xminorgrids=true, ymajorgrids=true,
%      grid style={dashed},
      minor x tick num=1,
      bar width=20pt,
      ybar,
      %Anpassen
      width=0.8\textwidth,
      height=0.3\textwidth, 
      xmin=-135, 
      xmax=-45,
      xtick distance=10,
      x unit=dBm,
      xlabel={RSRP},
      ylabel={CDF},
      xticklabels={
         $\le -130$,
         $>-130$ bis $\le -120$,
         $>-120$ bis $\le -110$,
         $>-110$ bis $\le -100$,
         $>-100$ bis $\le -90$,
         $>-90$ bis $\le -80$,
         $>-80$ bis $\le -70$,
         $>-70$ bis $\le -60$,
         $>-60$ bis $\le -50$,
      },
      x tick label style={rotate=-30, anchor=west, align=left},
      ]
      \addplot +[color=black!30] table[x=Upper, y=prPF] {test.txt};
      \end{axis}

   \begin{axis}[
   width=0.8\textwidth,
   height=0.3\textwidth,
   scale only axis,
   axis y line=left,
   axis x line=none,
   ymin=0, 
   ymax=1,
   ytick distance=0.1,
   xmin=-135, 
   xmax=-45,
   xtick distance=10,
   ylabel={PDF}
   ]
   \addplot +[mark=x,mark options={scale=2,solid}, color=black] table[x=Upper, y=prCF] {test.txt};         
   \end{axis}
   \end{tikzpicture}
\end{document}

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

Es wäre übrigens super, wenn du Bilder ordentlich hochladen würdest.
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

Stas

PDF und CDF Plots Probleme

Beitrag von Stas »

Hay und danke soweit :) Ich bin schon zu folgenden Ergebnis gekommen.

Bild
\documentclass[]{scrreprt}

\usepackage{pgfplots}
\usepgfplotslibrary{units}
\pgfplotsset{
	compat=newest,
	scale only axis, 
	width=0.8\textwidth,
	height=0.3\textwidth,
	major tick length = 0,
	minor tick length = 0,
	minor x tick num=1,
			}

\begin{document}

\begin{tikzpicture}
	\begin{axis}[
    axis y line*=left,
    xticklabels={},
	xminorgrids=true, ymajorgrids=true,
	grid style={dashed},
	ymin=0, ymax=1, ytick distance=0.1,
	ylabel={PDF},
	y label style={rotate=-90, at={(0,1.05)}, anchor=south east},
	bar width=20pt,
	ybar,
	legend entries={PDF},
	legend style={at={(0,-0.3)},anchor=north west},
	%
	%Zu Anpassen
	xmin=-135, xmax=-45, xtick distance=10,
	]
	
	\addplot +[color=black!30] table[x=x, y=y2,/pgf/number format/read comma as period] {m1/m1rsrp.txt};

	\end{axis}
	\begin{axis}[
	axis x line*=box,
	axis y line*=right,
	ymin=0, ymax=1, ytick distance=0.1,
	ylabel={CDF},
	y label style={rotate=-90, at={(1,1.05)}, anchor=south west},
	legend entries={CDF},
	legend style={at={(0,-0.45)},anchor=north west},
	%
	%Zu Anpassen
	xmin=-135, xmax=-45, xtick distance=10,
    xticklabels={,
	$\le -130$,
	$>-130$ bis $\le -120$,
	$>-120$ bis $\le -110$,
	$>-110$ bis $\le -100$,
	$>-100$ bis $\le -90$,
	$>-90$ bis $\le -80$,
	$>-80$ bis $\le -70$,
	$>-70$ bis $\le -60$,
	$>-60$ bis $\le -50$,
	},
	x tick label style={rotate=-30, anchor=north west,},
	      x unit=dBm,
	xlabel={RSRP},
	]

	\addplot +[color=black,mark=star,mark options={scale=2,solid}] table[x=x, y=y1,/pgf/number format/read comma as period] {m1/m1rsrp.txt};

	\end{axis}
	
\end{tikzpicture}


\end{document}          

Das mit \le lässt es besser als Orginal aussehen :)

Was mich noch stört ist das die Legendeneinträge nicht gleich groß sind v. Bild her.
Und die Grids überschneiden sich nicht immer korrekt.
x	cdf	y1	pdf	y2
-140	0	0	0	0
-130	13	0,000947798	13	0,000947798
-120	437	0,031860601	424	0,030912803
-110	2261	0,164843978	1824	0,132983377
-100	5843	0,425998833	3582	0,261154856
-90	9872	0,719743365	4029	0,293744532
-80	12516	0,912510936	2644	0,192767571
-70	13570	0,989355497	1054	0,076844561
-60	13716	1	146	0,010644503
-50	13716	1	0	0
-40	13716	1	0	0
-30	13716	1	0	0

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Du kannst die Plots jeweils mit `\label` versehen und am Ende eine gemeinsame Legende einfügen:
\begin{filecontents}{test.txt} 
x   cdf   y1   pdf   y2 
-140   0   0   0   0 
-130   13   0,000947798   13   0,000947798 
-120   437   0,031860601   424   0,030912803 
-110   2261   0,164843978   1824   0,132983377 
-100   5843   0,425998833   3582   0,261154856 
-90   9872   0,719743365   4029   0,293744532 
-80   12516   0,912510936   2644   0,192767571 
-70   13570   0,989355497   1054   0,076844561 
-60   13716   1   146   0,010644503 
-50   13716   1   0   0 
-40   13716   1   0   0 
-30   13716   1   0   0 
\end{filecontents}

\documentclass[]{scrreprt} 

\usepackage{pgfplots} 
\usepgfplotslibrary{units} 
\pgfplotsset{ 
    compat=newest, 
    scale only axis, 
    width=0.8\textwidth, 
    height=0.3\textwidth, 
    major tick length = 0, 
    minor tick length = 0, 
    minor x tick num=1, 
          } 

\begin{document} 

\begin{tikzpicture} 
    \begin{axis}[ 
     axis y line*=left, 
     xticklabels={}, 
    xminorgrids=true, ymajorgrids=true, 
    grid style={dashed}, 
    ymin=0, ymax=1, ytick distance=0.1, 
    ylabel={PDF}, 
    y label style={rotate=-90, at={(0,1.05)}, anchor=south east}, 
    bar width=20pt, 
    ybar, 
    %legend entries={PDF}, % auskommentiert
    %legend style={at={(0,-0.3)},anchor=north west}, 
    % 
    %Zu Anpassen 
    xmin=-135, xmax=-45, xtick distance=10, 
    ] 
     
    \addplot +[color=black!30] table[x=x, y=y2,/pgf/number format/read comma as period] {test.txt};
    \label{pgfplots:PDF}% hinzugefügt
    \end{axis} 
    \begin{axis}[ 
    axis x line*=box, 
    axis y line*=right, 
    ymin=0, ymax=1, ytick distance=0.1, 
    ylabel={CDF}, 
    y label style={rotate=-90, at={(1,1.05)}, anchor=south west}, 
    %legend entries={CDF}, % auskommentiert
    %legend style={at={(0,-0.45)},anchor=north west}, 
    % 
    %Zu Anpassen 
    xmin=-135, xmax=-45, xtick distance=10, 
     xticklabels={, 
    $\le -130$, 
    $>-130$ bis $\le -120$, 
    $>-120$ bis $\le -110$, 
    $>-110$ bis $\le -100$, 
    $>-100$ bis $\le -90$, 
    $>-90$ bis $\le -80$, 
    $>-80$ bis $\le -70$, 
    $>-70$ bis $\le -60$, 
    $>-60$ bis $\le -50$, 
    }, 
    x tick label style={rotate=-30, anchor=north west,}, 
          x unit=dBm, 
    xlabel={RSRP}, 
    ] 
    \addplot +[color=black,mark=star,mark options={scale=2,solid}] table[x=x, y=y1,/pgf/number format/read comma as period] {test.txt}; 
    \label{pgfplots:CDF}% hinzugefügt
    \end{axis} 
    \matrix% hinzugefügt
      [/pgfplots/every axis legend,at={(0,0|-current bounding box.south)},anchor=south west]
      {\node{\ref{pgfplots:PDF}}; & \node{PDF}; \\
      \node{\ref{pgfplots:CDF}}; & \node{CDF}; \\};
\end{tikzpicture} 

\end{document}
Wegen der Referenzen muss man das zwei Mal laufen lassen, damit die Legendenbilder korrekt angezeigt werden.

Was Du mit "Und die Grids überschneiden sich nicht immer korrekt. " meinst, ist mir nicht klar. Wenn Du möchtest, dass sich sich an den Kreuzungspunktenn jeweils Striche der Strichlinien befinden, dann musst Du die Gitterlinien in x- bzw. y-Richtung mit dash pattern und dash phase anpassen. Das dürfte aber mühselig werden.

Antworten