Ich arbeite mit statistischen Daten zu verschiedenen Themen, wie beispielsweise diese Daten. Diese möchte ich downloaden und gerne in meinem Dokument verwenden. Die Datensätze lassen sich u.a. in Dank @Henri s Lösungvorschlag habe ich eine Lösung für einen Datensatz. Ich habe anhand dem Code versucht dies auf einen anderen zu übertragen und den Workflow, auch mit sed, durchgeführt. Hab aber anscheinend die Funktionsweise von pgfplots nicht durchdrungen. Für mich ist das alles recht hartes Brot. Den Datensatz habe ich wie als CSV (,) heruntergeladen, mit Open in Online-Editor
tischa@tischa:~$ sed -i 's/"//g; s/%//g; 195d' /home/tischa/Arbeitsflaeche/inflation.csv bearbeitet und versucht den Code anzupassen. Jetzt als Minimalbeispiel, allerdings mit Fehler. Open in Online-Editor
\documentclass[tikz]{standalone} \usepackage{pgfplots,filecontents} \usepgfplotslibrary{dateplot} \pgfplotsset{compat=1.13} \begin{filecontents}{infla.csv} Month,CPI,Central bank of Iceland inflation target 2000-01-1,5.8,2.5 2015-12-1,2.0,2.5 \end{filecontents} \begin{document} \sffamily \begin{tikzpicture} \sffamily \begin{axis}[ date ZERO=2000-01-01, date coordinates in=x, no marks, width=12cm,height=6cm, enlargelimits=false, xticklabel={\year}, xtick={2000-01,2001-1,2002-1,2003-1,2004-1,2005-1,2006-1,2007-1,2008-1,2009-1,2010-1,2011-1,2012-1,2013-1,2014-1,2015-1}, xtick pos=left, xtick align=outside, ymin=0,ymax=20, ytick={0,4,...,20}, yticklabel={\pgfmathprintnumber[verbatim]{\tick}\%}, ytick style={draw=none}, yticklabel pos=right, ymajorgrids=true, legend style={ draw=none, legend cell align=left, at={(1.12,1.05)}, anchor=north west, legend image code/.code={ \filldraw[##1] (-.5ex,-.5ex) rectangle (1ex,1ex); } } ] \addplot table[col sep=comma,x=Year,y={Central bank of Iceland inflation target}] {infla.csv}; \addlegendentry{Central bank of Iceland inflation target}; \addplot table[col sep=comma,x=Year,y={CPI}] {infla.csv}; \addlegendentry{CPI}; \end{axis} \end{tikzpicture} \end{document} Als Fehler erhalte ich Open in Online-Editor
Package pgfplots Warning: running in backwards compatibility mode (unsuitable t ick labels; missing features). Consider writing \pgfplotsset{compat=1.13} into your preamble. on input line 4. ) Runaway argument? 01+/{\c@pgf@counta }\edef \pgfmathresult {\the \c@pgf@counta }\pgfmath@smuggleo ne \ETC. gefragt 10 Jan '16, 19:43 Tischa
Ergebnis 5 von 18
show 13 more comments
|
Ich habe mir die Daten als CSV (,) heruntergeladen und mit dem GNU/Linux-Tool
Der Hintergrund ist, dass Nach diesen Ersetzungen war es ein leichtes mit der Bibliothek Open in Online-Editor
\documentclass{article} \usepackage{pgfplots} \usepgfplotslibrary{dateplot} \begin{document} \begin{tikzpicture} \begin{axis}[ date coordinates in=x, no marks, xlabel=Date, xticklabel={\year}, xtick={2008-01-01,2010-01-01,2012-01-01,2014-01-01,2016-01-01}, ylabel={Rate [\%]}, ] \addplot table[col sep=comma,x=Date,y={Overnight CBI rates}] {cbis-interest-rates.csv}; \addlegendentry{Overnight CBI rates}; \addplot table[col sep=comma,x=Date,y={CBI current account rates}] {cbis-interest-rates.csv}; \addlegendentry{CBI current account rates}; \end{axis} \end{tikzpicture} \end{document} Mit ein wenig Spielerei: Open in Online-Editor
\documentclass[tikz]{standalone} \usepackage{pgfplots} \usepgfplotslibrary{dateplot} \begin{document} \sffamily \begin{tikzpicture} \begin{axis}[ date coordinates in=x, no marks, width=12cm,height=6cm, enlargelimits=false, xticklabel={\year}, xtick={2009-01-01,2010-01-01,2011-01-01,2012-01-01,2013-01-01,2014-01-01,2015-01-01,2016-01-01}, xtick pos=left, xtick align=outside, ymin=0,ymax=28, ytick={0,4,...,28}, yticklabel={\pgfmathprintnumber[verbatim]{\tick}\%}, ytick style={draw=none}, yticklabel pos=right, ymajorgrids=true, legend style={ draw=none, legend cell align=left, at={(1.12,1.05)}, anchor=north west, legend image code/.code={ \filldraw[##1] (-.5ex,-.5ex) rectangle (1ex,1ex); } } ] \addplot table[col sep=comma,x=Date,y={Overnight CBI rates}] {cbis-interest-rates.csv}; \addlegendentry{Overnight CBI rates}; \addplot table[col sep=comma,x=Date,y={CBI current account rates}] {cbis-interest-rates.csv}; \addlegendentry{CBI current account rates}; \end{axis} \end{tikzpicture} \end{document} beantwortet 10 Jan '16, 23:15 Henri Vielen Dank für die Vorlage. Wenn ich den Code in meine Date einpflege, erhalte ich folgende Fehlermeldung. `! Undefined control sequence.
pgfplots@loc@TMPc ...pgfplots@calender@ZEROSHIFT
relax ifx pgfplotstempt...
l.144 ] ! Package pgfplots Error: Sorry, could not retrieve column 'Overnight CBI rates ' from table '\pgfplotstableread@filename@@table@name '. Please check spelling (or introduce name aliases).. l.145 ...ight CBI rates}] {cbisinterestrates.csv};`
(11 Jan '16, 16:42)
Tischa
@Tischa Ich kann dir gerne die Fehlermeldung übersetzen. Die Spalte mit dem Titel “Overnight CBI rates” wurde offensichtlich nicht in der Datei
(11 Jan '16, 17:07)
Henri
Hm. Ich hab die Datei auch im CSV (,) heruntergeladen. Dann im Terminal sed -i 's/"//g; s/%//g; 2003,2005d' /home/tischa/Arbeitsflaeche/cbis-interest-rates.csv durchgeführt und in einer Testdatei Deinen Code eins zu eins kopiert und kompiliert und erhalte dann die Fehlermeldung. ! Undefined control sequence. pgfplots@loc@TMPc ...pgfplots@calender@ZEROSHIFT relax ifx pgfplotstempt... l.31 ] und
(11 Jan '16, 18:44)
Tischa
PGFPlots: reading {cbis-interest-rates.csv}
Package pgfplots info on input line 32: dateplot: setting 'date ZERO={2008-01-0
7}' for this axis.
Missing character: There is no ; in font nullfont!
PGFPlots: reading {cbis-interest-rates.csv}
Missing character: There is no ; in font nullfont!
! Dimension too large.
(11 Jan '16, 18:44)
Tischa
@Tischa Hast du an meinem Code wirklich absolut nichts verändert? Wenn das der Fall ist musst du eventuell ein Update von TeXlive machen.
(11 Jan '16, 18:58)
Henri
@Nein. Zuerst hatte ich es in meinem eigentlichen Dokument eingepflegt und dann nur den Dateinamen der .csv geändert (natürlich mit demselben Dateinnamen im Code und die Datei selbst). Als das nicht funktioniert hat, hab ich ne Testdatei mit Deinem Code und eine Datei mit genau demselben Namen wie Deinem Code angelegt, und das einzige was ich problemlos kann. c+p. Der Inhalt der .csv beginnt. Date,Overnight CBI rates,CBI current account rates 2008-01-07,15.25,13.25 2008-01-08,15.25,13.25
(11 Jan '16, 19:12)
Tischa
tischa@tischa:~$ tex --version TeX 3.14159265 (TeX Live 2015) tischa@tischa:~$ sudo /opt/texbin/tlmgr update --alltlmgr: package repository http://ftp.snt.utwente.nl/pub/software/tex/systems/texlive/tlnet tlmgr: saving backups to /usr/local/texlive/2015/tlpkg/backups tlmgr: no updates available
(11 Jan '16, 19:12)
Tischa
@Tischa: Hast Du beachtet, dass die Originaldaten zunächst (mit
(11 Jan '16, 19:49)
saputello
@saputello. Ja. Ich denke schon, dass ich das richtig gemacht habe. Im Terminal mit tischa@tischa:~$ sed -i 's/"//g; s/%//g; 2003,2005d' /home/tischa/Arbeitsflaeche/cbis-interest-rates.csv der die Grundstruktur der *.csv Datei wie oben aufgeführt geändert hat.
(11 Jan '16, 19:58)
Tischa
@Tischa: Leider habe ich die cvs-Datei, die heute Nacht noch problemlos heruntergeladen werden konnte, wieder gelöscht und jetzt funktioniert die Seite bei mir nicht mehr: Ich kann zwar noch Daten auswählen, bekomme sie aber weder angezeigt, noch kann ich sie runterladen.
(11 Jan '16, 20:21)
saputello
@saputello. Ich hatte ne Short-Url angelegt. http://data.is/1K7a7b0. Sollte funktionierten. Oder der vollständige Link. http://sedlabanki.datamarket.com/en/data/set/231e/cbis-interest-rates#!ds=231e!2epz=4.6&display=line&s=apn&f=rolling:2 Bei mir funktioniert sie noch.
(11 Jan '16, 20:55)
Tischa
@Tischa: Ja, ich weiß, dass du eine Short-URL angegeben hattest. Aber gerade hat der Download nicht funktioniert. Egal: Füg mal bei
(11 Jan '16, 22:40)
saputello
@saputello. Super, es funktioniert.:-D Vielen Dank. Nur noch ein Detail. Die Label ragen in meinem Hauptdokument in den Rand hinnein. Wie kann ich einen Zeilenumbruch bei den Label "CBI current account rates" setzen? Der Plot beginnt mit dem Jahr 2009. Ich hab xtick={2008-01-01,2009-01-01,---}, um mit dem Jahr 2008 beim Nullpunkt der x-Achse zu beginnen. Hat leider nicht funktioneirt.
(11 Jan '16, 23:13)
Tischa
@saputello: Muss ich dann date ZERO=2008-01-01 setzen? Das funktioniert leider nicht.
(12 Jan '16, 16:09)
Tischa
Ergebnis 5 von 15
show 10 more comments
|
Darüber hinaus muss natürlich der Spaltenname auch im Datensatz zu finden sein. Wenn Du im Datensatz die erste Spalte mit Open in Online-Editor
\documentclass[tikz]{standalone} \usepackage{pgfplots,filecontents} \usepgfplotslibrary{dateplot} \pgfplotsset{compat=newest}% statt 1.13, wegen des Online-Editors \begin{filecontents}{infla.csv} Month,CPI,Central bank of Iceland inflation target 2000-01-1,5.8,2.5 2015-12-1,2.0,2.5 \end{filecontents} \begin{document} \sffamily \begin{tikzpicture} \sffamily \begin{axis}[ date ZERO=2000-01-01, date coordinates in=x, no marks, width=12cm,height=6cm, enlargelimits=false, xticklabel={\tiny\year},% Schrift willkürlich verkleinert, damit es irgendwie passt! xtick={2000-1-1,2001-01-01,2002-01-01,2003-01-01,2004-01-01,2005-01-01,2006-01-01,2007-01-01,2008-01-01,2009-01-01,2010-01-01,2011-01-01,2012-01-01,2013-01-01,2014-01-01,2015-01-01},% Datumformat korrigiert! xtick pos=left, xtick align=outside, ymin=0,ymax=20, ytick={0,4,...,20}, yticklabel={\pgfmathprintnumber[verbatim]{\tick}\%}, ytick style={draw=none}, yticklabel pos=right, ymajorgrids=true, legend style={ draw=none, legend cell align=left, at={(1.12,1.05)}, anchor=north west, legend image code/.code={ \filldraw[##1] (-.5ex,-.5ex) rectangle (1ex,1ex); } } ] \addplot table[col sep=comma,x=Month,% Year gibt es im Datensatz nicht! y={Central bank of Iceland inflation target}] {infla.csv}; \addlegendentry{Central bank of Iceland inflation target}; \addplot table[col sep=comma,x=Month,% Year gibt es im Datensatz nicht! y={CPI}] {infla.csv}; \addlegendentry{CPI}; \end{axis} \end{tikzpicture} \end{document} Die Einstellung Ich finde es übrigens sehr schade, dass Du Deine neue Frage einfach in die alte hineingemischt hast, so dass @Henris ausgezeichnete Antwort als Antwort nicht mehr ausreichte. Stattdessen wäre eine wirklich neue Frage für dieses neue Problem sinnvoll gewesen. beantwortet 06 Feb '16, 18:29 saputello Genial. Super. Vielen Dank!!! Nachdem ich meinen gewerkelten und verputschten Code rausgenommen und mit Deinem ersetzt habe, funktioniert es. Ich wage mich gleich mal an die nächste Abbildung in guter Hoffnung, dass ich es jetzt alleine auf die Reihe bekomme. Deine Anmerkungen werde ich mir zu Herzen nehmen. Danke nochmal.
(06 Feb '16, 19:34)
Tischa
|
→ datatool oder pgfplots je nachdem, was mit den Daten passieren soll. Beide können jedenfalls CSV-Dateien verarbeiten. Wir haben hier auch schon zu beiden Beispiele. Siehe die entsprechenden Themen.
Mit meinen bisherigen Kenntnissen, wird das eine ausuferende Beschäftigung. Ich kannte bislang noch nicht mal den Begriff "plot". Danke aber für den Ansatz/Hinweis.
Crosspost
date ZERO
muss AFAIK ein fürpgf
gültiges Datum sein.D.h.? Ich muß den Datensatz mit sed umändern, ähnlich wie in dem anderen Beispiel im Format "2010-01-01"?
Zu Option
date ZERO
siehe diepgfplots
-Anleitung, derzeit Abschnitt 4.21.2. Du hast oben als Wert2001-01
angegeben. Sorry, aber da Dein Beispiel kein vollständiges Minimalbeispiel ist, funktioniert es in Overleaf nicht und ich bin mit dem Smartphone unterwegs. Da ist schon dieser Kommentar ein Qual und das Lesen der Anleitung online.Leider bin ich nicht schlauer geworden. Hab die Datensätze sogar händisch an das vorherige Beispiel angepasst. Aber leider läuft es nicht.
Jmd. ne Idee?
Hast Du denn mal ausprobiert, in Deinem Beispiel oben
date ZERO=2000-01
durchdate ZERO=2000-01-01
zu ersetzen?Ich habe ehrlich gesagt keine Lust, mir immer erst die CSV-Datei umständlich von irgend einem Server zu besorgen und nachzubearbeiten, bevor ich irgend etwas testen kann. Ich weiß dann ja auch nicht, ob Du wirklich genau dieselbe Nachbearbeitung wie ich durchgeführt hast. Wie wäre es, wenn Du einen minimalisierten Datensatz in Dein Beispiel einfügst?
Wie kann ich den Datensatz hier einpflegen, die *.csv-Datei hochladen?
Datumsangaben bestehen in
pgfplots
AFAIK aus Jahr-Monat-Tag, nicht nur aus Jahr-Monat. Wie schon mehrfach erwähnt gilt das auch für Optiondate ZERO
.Und genau genommen ist das jetzt eine ganz neue Frage mit einem ganz anderen Problem als ursprünglich.
Die Warnung besagt hingegen, dass Du nicht angegeben hast, welche Kompatibilitätsstufe verwendet werden soll. In der Warnung steht auch, was Du in die Dokumentpräambel einfügen sollst, damit die Warnung verschwindet:
\pgfplotsset{compat=1.13}
. Siehe dazu auch diepgfplots
-Anleitung.@saputello. Leider hab ich es damit noch nicht hinbekommen.
@Tischa: Was hast Du womit nicht hinbekommen? Muss man Dir eigentlich alle Infos immer wie Würmer aus der Nase ziehen? Vielleicht kannst Du Dich irgendwann einmal darauf einstellen, dass wir Dir nicht bei der Arbeit über die Schulter schauen, sondern ganz und gar auf die Infos angewiesen sind, die Du uns lieferst. Ich würde übrigens wieder einmal vermuten, dass Du in einem klassischen Diskussionsforum besser aufgehoben wärst. Die ewig langen Kommentarstränge und immer wieder geänderten Fragen bei Dir sind für mich jedenfalls ein starkes Indiz dafür.
pgfplotsset{compat=1.13} eingefügt, wie Du in Deinem vorherigen Kommentar angemerkt hast. Einen minimalen Datensatz habe ich auch eingefügt.
Was ist denn danach passiert, @Tischa? Ging die Klappe des CD-ROM Laufwerks auf? Oder spielten keine Videos mehr? Oder roch es plötzlich komisch? Stell dir vor wir wären Automechaniker, so einem sagst du auch nicht: "Ging nicht, geht nicht wie soll." Ich mein, der freut sich, der hat plötzlich Dollarzeichen im Auge, genau wie im Comic ... aber hier wird keiner bezahlt.
Yoah. Ist angekommen... Also, ich hab soweit die Anmerkungen eingepflegt. Allerdings ist das Beispiel nicht lauffähig.
Bekommst Du wirklich noch die Warnung:
Bei mir gibt es die nicht mehr. Die Fehler wegen der falschen Datumsangaben bleibt natürlich. Schließlich hast Du noch immer beixticks
jede Menge davon.