Daten von Excel als Diagramm in Latex darstellen

Tabellen und Grafiken erstellen und anordnen


dome
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Do 26. Sep 2013, 14:27

Daten von Excel als Diagramm in Latex darstellen

Beitrag von dome »

Hallo Leute,

ich habe eine Excel Tabelle mit Daten und würde gerne die Daten verwenden um sie in Latex als Säulendiagramm darzustellen. Sprich auf der x Achse sind Stunden abgetragen und bei z.B. 35 Studen ergibt sich ein Wert von 500 auf der y-Achse.

Mein Problem ist, dass ich mit Tikz und pgfplots einfach nicht klarkomme. Ich verstehe den Aufbau nicht so recht und die Dokumentationen erschlagen einen. Könnte mir jmd helfen?

Mein Minimalbeispiel
\documentclass{scrreprt}  
\KOMAoptions{titlepage, parskip=half, fontsize=12, DIV=12, paper=a4,fontsize=12pt, headsepline, headings=small}  
\setkomafont{caption}{\footnotesize}
\setkomafont{captionlabel}{} 
\usepackage{setspace} 
\usepackage{threeparttable}


\pagestyle{headings}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[english]{babel}
\usepackage{lipsum} 
%\usepackage[english=american]{csquotes}
%\MakeAutoQuote {¡}{“}  %Das hier sind ¡Anführungszeichen“\\

\usepackage{nicefrac}
\usepackage{amsmath}
\usepackage{booktabs} 
\usepackage {graphicx}

\usepackage{float} 
\usepackage{tikz}
\usepackage{pgfplots}

\begin{document}



\begin{tikzpicture}
		\begin{axis}[
		ybar,
		width=8cm, height=6cm,
		xlabel=weekly hours,
		ylabel=absolute frequency,
		]
		%\addplot table{test.csv}
		\end{axis}
	\end{tikzpicture}
	
\end{document}

wenn ich das % vor addplot wegnehme soll quasi die excel datei geladen werden. Leider klappt das nicht.
Jemand Ideen?

LG

die datentabelle ssieht wie folgt aus:

stunde anzahl_personen
1 8
2 10
4 30
6 15

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

Beitrag von Johannes_B »

Auf den ersten Blick fehlt da ein Semikolon nach dem addplot command.

Jap, einzig das Semikolon fehlt.

Pgfplots und auch tikz haben beide recht anschauliche Tutorials. Diese sollten dir einen guten Einstieg ermöglichen. Lass dich von den vielen Möglichkeiten nicht abschrecken.
\begin{filecontents}{\jobname Data.csv}
stunde anzahl_personen
1 8
2 10
4 30
6 15 
\end{filecontents}
\documentclass{scrreprt}  
\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
      \begin{axis}[
      ybar,
      xlabel=weekly hours,
      ylabel=absolute frequency,
      ]
      \addplot table{\jobname Data.csv};%<- Semikolon
      \end{axis}
   \end{tikzpicture}
   
\end{document}
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.

dome
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Do 26. Sep 2013, 14:27

Beitrag von dome »

ahh vielen Dank, die Daten bekomme ich nun geladen, aber:

allerdings sind das im Original ein paar mehr, sodass die Balken sich übereinander schieben... kann man das nur mit Hilfe der width Einstellung regeln?

Desweiteren gibt er auf der x Achse nur jeden zweiten Wert an?! Kann man sich auch jeden Wert anzeigen lassen?

wie könnte ich die Farbe der Balken auf schwarz stellen?

wie schaffe ich es, dass er nur die x und y Achse anzeigt und nicht auch noch oben und rechts eine Linie zieht.

Bisher bin ich soweit gekommen:


\documentclass{scrreprt}  
\KOMAoptions{titlepage, parskip=half, fontsize=12, DIV=12, paper=a4,fontsize=12pt, headsepline, headings=small}  
\setkomafont{caption}{\footnotesize}
\setkomafont{captionlabel}{} 
\usepackage{setspace} 
\usepackage{threeparttable}




\begin{filecontents}{\jobname Data2.csv}
24	1
35	5
35.3	1
35.5	1
36	31
36.5	9
37	37
37.2	1
37.5	48
38	23
38.5	30
39	15
39.5	2
40	87
40.5	1
41	5
41.5	1
42	12
42.5	4
43	4
44	8
45	17
46	3
46.5	1
47	3
47.5	2
48	4
50	9
52	2
55	1
56	2
60	4
65	2
75	1
\end{filecontents} 

\pagestyle{headings}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[english]{babel}
\usepackage{lipsum} 
%\usepackage[english=american]{csquotes}
%\MakeAutoQuote {¡}{“}  %Das hier sind ¡Anführungszeichen“\\

\usepackage{nicefrac}
\usepackage{amsmath}
\usepackage{booktabs} 
\usepackage {graphicx}

\usepackage{float} 
\usepackage{tikz}
\usepackage{pgfplots}



\begin{document}



	

\begin{tikzpicture}
		\begin{axis}[
		color=black,
		fill=black,
		title=actual weekly hours 1994,		
		ybar,
		width=12cm, height=6cm,
		xmin=34,
		xmax=50,
		xlabel=weekly hours,
		ylabel=absolute frequency,
		]
		\addplot table{\jobname Data2.csv};
		\end{axis}
	\end{tikzpicture}
	
\end{document}

dome
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Do 26. Sep 2013, 14:27

Beitrag von dome »

hab mich soweit arrangiert, schwarze farbe bekommt man mit
\addplot table{\jobname data.csv}
		[fill=black,
		draw=black];
wie man die rechte und obere begrenzung wegbekommt weiss ich zwar noch nicht, aber ich setze den beitrag trotzdem mal auf beantwortet, da mein hauptanliegen ja geklärt wurde

LG

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

Beitrag von esdd »

Hier ist mal noch ein Vorschlag, bei dem dann auch nur die linke und untere Achse gezeichnet sind:
\documentclass{scrartcl}
\usepackage{pgfplots,showframe}
\pgfplotsset{compat=newest}
\begin{document} 
\begin{tikzpicture} 
       \begin{axis}[ 
       %color=black, 
       %fill=black, 
       title=actual weekly hours 1994,       
       ybar,
       axis lines=left,% welche Achsen gezeichnet werden
       bar width=3pt,% Breite der Balken
       enlarge x limits=0.025,% Verlängerung der x-Achse
       enlarge y limits={0.05,upper},% Verlängerung der y-Achse oben
       xtick={34,...,50},% xtick von 34 bis 50 im Abstand 1
       width=0.95\linewidth, height=6cm, 
       xmin=34,
       xmax=50,
       ymin=0,% untere Grenze für y
       xlabel=weekly hours, 
       ylabel=absolute frequency, 
       ] 
       \addplot+[black]% Balken schwarz
          table{\jobname Data2.csv}; 
       \end{axis} 
    \end{tikzpicture} 
\end{document}
Gruß
Elke

Antworten