Einfacher Scatterplot mit pgfplots

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Einfacher Scatterplot mit pgfplots

von Thomas_Leibundgut » Fr 29. Apr 2016, 00:54

Lieber Bartman

Wow, vielen Dank für deine tolle Arbeit! So ziemlich genau so hatte ich mir das vorgestellt. Damit kann ich die bisher benötigten Abbildungen gut machen, und kann wohl auch ähnliche weitere erstellen.

Danke nochmals für deine super Unterstützung, und eine gute Zeit.
Lg, Thomas

von Bartman » Mi 27. Apr 2016, 00:03

Beim Thema Hochkomma in der Zifferngruppierung gibt es offenbar länderabhängige Unterschiede.

Ich bin mir nicht sicher, ob im Beispiel alles richtig eingestellt ist, aber was anderes fiel mir gerade nicht ein.
\begin{filecontents}{test2.csv}
Jahr Zensus
-234 270713
-209 137108
-204 214000
-194 143704
-189 258318
-179 258794
-174 269015
-169 312805
-164 337022
-159 328316
-154 324000
-147 322000
-142 327442
-136 317933
-131 318823
-125 394736
-115 394336
-86 463000
-70 910000
\end{filecontents}

\documentclass[ngerman]{scrreprt}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{babel}
\usepackage{pgfplots}
\usepackage{cleveref} % für benannte Querverweise
\usepackage{showframe} % nur für die Seitenränder

\pgfplotsset{
   compat=1.12, % nur für Overleaf, sonst bitte 1.13
   /pgf/number format/.cd,
      fixed,
      set thousands separator = $'$, % Änderung des Tausendertrennzeichens
      min exponent for 1000 sep=4 % nicht bei vierstelligen Zahlen
}

\begin{document}

\listoffigures

\chapter{Ein Kapitel}

\begin{figure}[htbp]
\centering
\begin{tikzpicture}
\begin{axis}[
   width=13.5cm,
   height=8cm,
   xlabel={Jahr},
   ylabel={Zensus},
   scatter,
   scatter/use mapped color = {
      draw=black,
      fill=black
   },
   only marks,
   ymajorgrids,
   ymin=0,
   ymax=1000000,
   xtick={-250,-225,...,-50},
   xmin=-250,
   xmax=-50,
   scaled y ticks = false
]

\addplot table[x=Jahr, y=Zensus] {test2.csv};
\end{axis}
\end{tikzpicture}
\caption{Zensuszahlen 234--70 BC}
\label{fig:zensuszahlen}
\end{figure}

\Cref{fig:zensuszahlen}

\end{document}
Bild
Dateianhänge
Streudiagramm.png
Streudiagramm.png (29.16 KiB) 2379 mal betrachtet

von Thomas_Leibundgut » Di 26. Apr 2016, 22:00

Lieber Bartman

Vielen Dank für deine rasche Antwort, und die schon einmal sehr tolle Annäherung! Damit kann ich sicher weiter arbeiten.

Hmm, eine Bildunterschrift wäre wohl auch noch elegant. Zur Not ginge es wohl auch ohne, aber wenn es nicht allzu viel Aufwand wäre, würde ich mich sehr über einen Hinweis bzw. eine Lösung freuen.

Wenn wir schon gerade dabei sind (nachdem ich es rund eine Stunde selbst probiert habe): Wäre es möglich,
a) die Graphik irgendwie so zu referenzieren, dass ich ein automatisches Graphenverzeichnis haben kann?
b) die Punkte alle schwarz darzustellen?
c) das Tausendertrennzeichen auf das normale Hochkomma zu ändern, das auch sonst bei 100'000 erscheint?

Vielen Dank für all deine Hilfe, und einen schönen Abend!
Lg, Thomas

von Bartman » Di 26. Apr 2016, 02:59

Der BBCode dürfte in Deinem Beitrag abgeschaltet sein, weil Dein Beispiel trotz Markierung nicht farblich hervorgehoben wird.

Nutze für die Daten in Deiner xls-Datei besser die Umgebung, welche Du in meinem Beispiel siehst. Damit haben mögliche Helfer einen einfacheren Zugang.

Soll der Text, der title zugewiesen wird, die einzige Beschriftung der Abbildung sein, oder gibt es in Deiner Arbeit noch einen zur Grafik gehörenden caption-Aufruf?

Der folgende Quelltext ist lediglich eine Annäherung an das Bild in der pdf-Datei.
\begin{filecontents}{test2.csv}
Jahr Zensus
-234 270713
-209 137108
-204 214000
-194 143704
-189 258318
-179 258794
-174 269015
-169 312805
-164 337022
-159 328316
-154 324000
-147 322000
-142 327442
-136 317933
-131 318823
-125 394736
-115 394336
-86 463000
-70 910000
\end{filecontents}

\documentclass{standalone}

\usepackage{pgfplots}

\pgfplotsset{
	compat=1.12, % nur für Overleaf, sonst bitte 1.13
	/pgf/number format/.cd,
		fixed,
		set thousands separator = \thinspace, % Änderung des Tausendertrennzeichens
		min exponent for 1000 sep=4 % nicht bei vierstelligen Zahlen
}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
	title={Zensuszahlen 234--70 BC},
	xlabel={Jahr},
	ylabel={Zensus},
	scatter,
	only marks,
	ymajorgrids,
	ymin=0,
	ymax=1000000,
	xmin=-250,
	xmax=-50,
	scaled y ticks = false
]

\addplot table[x=Jahr, y=Zensus] {test2.csv};
\end{axis}
\end{tikzpicture}

\end{document}

Einfacher Scatterplot mit pgfplots

von Thomas_Leibundgut » Mo 25. Apr 2016, 20:13

Guten Abend

Ich schreibe eine Master-Arbeit über historische Demographie, und habe einige Zensuszahlen aus der römischen Republik, die ich gerne graphisch darstellen möchte.

Ich habe jeweils ein Doppeljahr (z.B. 204/3 v. Chr.) und eine korrespondierene Zahl (z.B. 137'108), die ich in LaTeX gerne ähnlich wie in der angehängten Datei (in Excel erstellt) darstellen möchte.

Am liebsten hätte ich eine x-Achse, auf der für jeden Punkt das korrespondierende Jahr eingezeichnet ist, auf der y-Achse 100'000er-Schritte, sowie die Punkte unverbunden in schwarz, gemeinsam mit einer linearen Trendlinie. Wenn die Formatierung "-204/3" unmöglich ist, so wäre auch "-204" für mich möglich, genau wie eine x-Achsen-Beschriftung in 25-Jahr-Intervallen; die Trendlinie muss auch nicht unbedingt sein.

Die Zahlenpaare im Anhang (in einer als CSV gespeicherten Kopie) möchte ich gerne darstellen. Ich habe es folgendermassen probiert:
\documentclass{article}
\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
		\begin{axis}[
			title={Zensuszahlen},
			xlabel={Jahr},
			ylabel={Zensus},
			]
			\addplot table[x=Jahr, y=Zensus] {test2.csv};
		\end{axis}
\end{tikzpicture}

\end{document}
Leider kriege ich eine ganze Reihe Fehlermeldungen, mit denen ich ehrlich gesagt nichts anfangen kann:

Package pgfplots Error: Sorry, could not retrieve column 'Jahr' from table '\name aliases).. ...dplot table[x=Jahr, y=Zensus] {Test2.csv};

Package PGF Math Error: Could not parse input '-234;270713' as a floating point number, sorry. The unreadable part was near ';270713'.. \addplot table {Test2.csv};

Package pgfplots Error: Sorry, the requested column number '1' in table 'Test2.csv' does not exist!? Please verify you used the correct index 0 <= i < N.. \addplot table {Test2.csv};

Da die Dokumentation von pgfplots sehr ausführlich ist, und eine enorme Anzahl von (Spezial)Fällen behandelt, die ich weder versehe noch dem hier gewünschten Niveau angemessen erscheinen, dachte ich mir, ich stelle die Frage hier.

Ich würde mich über eine simple Antwort und evtl. ein Beispiel freuen.

Vielen Dank, und einen schönen Abend!
Lg, Thomas
Dateianhänge
Daten.xls
(25 KiB) 242-mal heruntergeladen
Zensuszahlen.pdf
(22.32 KiB) 235-mal heruntergeladen

Nach oben