von Kappa » Mi 18. Jan 2017, 07:22
Hallo zusammen,
ich habe mir mit tikzpicture eine Matrix erstellt (s.u.). Ich stelle eine 10x10 Matrix dar und möchte das auch so mit nodes belassen. Anstatt jeden Node einzeln anzugeben möchte ich sie einlesen, ebenfalls im Minimalbeispiel.
Allerdings ändert sich durch die Verwendung von axis meine Größeneinheit...In meiner .csv-Datei stehen (i,j,val) Werte, die automatisch in
generiert werden sollen.
Mein Skalierungsproblem mit axis sieht wie folgt aus:
\documentclass[12pt,a4paper,oneside,listof=totoc,bibliography=totoc,BCOR=4mm,DIV=12,]{scrartcl}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
So sieht meine Matrix aus: \\[5mm]
\begin{tikzpicture}
\node at (0.2,0.2) {0};\node at (0.2,0.6) {1};\node at (0.2,1) {1};\node at (0.2,1.4) {1};\node at (0.2,1.8) {1};\node at (0.2,2.2) {1};\node at (0.2,2.6) {1};\node at (0.2,3) {0};\node at (0.2,3.4) {1};\node at (0.2,3.8) {1};
\node at (0.6,0.2) {1};\node at (0.6,0.6) {1};\node at (0.6,1) {1};\node at (0.6,1.4) {1};\node at (0.6,1.8) {1};\node at (0.6,2.2) {1};\node at (0.6,2.6) {1};\node at (0.6,3) {0};\node at (0.6,3.4) {1};\node at (0.6,3.8) {1};
\node at (1,0.2) {1};\node at (1,0.6) {1};\node at (1,1) {1};\node at (1,1.4) {1};\node at (1,1.8) {1};\node at (1,2.2) {1};\node at (1,2.6) {1};\node at (1,3) {1};\node at (1,3.4) {1};\node at (1,3.8) {1};
\node at (1.4,0.2) {1};\node at (1.4,0.6) {1};\node at (1.4,1) {1};\node at (1.4,1.4) {1};\node at (1.4,1.8) {1};\node at (1.4,2.2) {1};\node at (1.4,2.6) {1};\node at (1.4,3) {1};\node at (1.4,3.4) {1};\node at (1.4,3.8) {1};
\node at (1.8,0.2) {1};\node at (1.8,0.6) {0};\node at (1.8,1) {0};\node at (1.8,1.4) {1};\node at (1.8,1.8) {1};\node at (1.8,2.2) {1};\node at (1.8,2.6) {1};\node at (1.8,3) {1};\node at (1.8,3.4) {1};\node at (1.8,3.8) {1};
\node at (2.2,0.2) {1};\node at (2.2,0.6) {1};\node at (2.2,1) {1};\node at (2.2,1.4) {1};\node at (2.2,1.8) {1};\node at (2.2,2.2) {0};\node at (2.2,2.6) {1};\node at (2.2,3) {1};\node at (2.2,3.4) {1};\node at (2.2,3.8) {1};
\node at (2.6,0.2) {1};\node at (2.6,0.6) {1};\node at (2.6,1) {1};\node at (2.6,1.4) {1};\node at (2.6,1.8) {1};\node at (2.6,2.2) {0};\node at (2.6,2.6) {0};\node at (2.6,3) {1};\node at (2.6,3.4) {1};\node at (2.6,3.8) {1};
\node at (3,0.2) {1};\node at (3,0.6) {1};\node at (3,1) {1};\node at (3,1.4) {1};\node at (3,1.8) {1};\node at (3,2.2) {0};\node at (3,2.6) {1};\node at (3,3) {1};\node at (3,3.4) {1};\node at (3,3.8) {1};
\node at (3.4,0.2) {1};\node at (3.4,0.6) {1};\node at (3.4,1) {1};\node at (3.4,1.4) {1};\node at (3.4,1.8) {1};\node at (3.4,2.2) {0};\node at (3.4,2.6) {1};\node at (3.4,3) {1};\node at (3.4,3.4) {1};\node at (3.4,3.8) {0};
\node at (3.8,0.2) {1};\node at (3.8,0.6) {1};\node at (3.8,1) {1};\node at (3.8,1.4) {1};\node at (3.8,1.8) {1};\node at (3.8,2.2) {1};\node at (3.8,2.6) {1};\node at (3.8,3) {1};\node at (3.8,3.4) {0};\node at (3.8,3.8) {0};
\draw (0.1,0)--(0,0)--(0,4)--(0.1,4);
\draw (3.9,0)--(4,0)--(4,4)--(3.9,4);
\end{tikzpicture}
So war mein Versuch sie einzulesen: \\[5mm]
\begin{tikzpicture}
\begin{axis}[
ticks=none,
axis x line=none,
axis y line=none,
ybar,
xtick=0,
ymin=0,
ymax =4,
xmax = 4,
xmin = 0,
width = 4cm,
height = 4cm,
]
\addplot+[
only marks,
visualization depends on=\thisrow{val} \as \val,
nodes near coords=\pgfmathprintnumber{\val},
every node near coord/.append style={
black,
inner sep=1pt,
yshift=0ex
}
] table [col sep=comma] {matrixData.csv};
\end{axis}
\draw (0.1,0)--(0,0)--(0,4)--(0.1,4);
\draw (3.9,0)--(4,0)--(4,4)--(3.9,4);
\end{tikzpicture}
\end{document}
Weiß jemand Rat? Danke schonmal für Hilfe :)
PS: csv-Datei im Anhang
- Dateianhänge
-
- matrixData.zip
- (351 Bytes) 281-mal heruntergeladen
Hallo zusammen,
ich habe mir mit tikzpicture eine Matrix erstellt (s.u.). Ich stelle eine 10x10 Matrix dar und möchte das auch so mit nodes belassen. Anstatt jeden Node einzeln anzugeben möchte ich sie einlesen, ebenfalls im Minimalbeispiel.
Allerdings ändert sich durch die Verwendung von axis meine Größeneinheit...In meiner .csv-Datei stehen (i,j,val) Werte, die automatisch in [code]\node at(i,j){val}[/code] generiert werden sollen.
Mein Skalierungsproblem mit axis sieht wie folgt aus:
[code]
\documentclass[12pt,a4paper,oneside,listof=totoc,bibliography=totoc,BCOR=4mm,DIV=12,]{scrartcl}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
So sieht meine Matrix aus: \\[5mm]
\begin{tikzpicture}
\node at (0.2,0.2) {0};\node at (0.2,0.6) {1};\node at (0.2,1) {1};\node at (0.2,1.4) {1};\node at (0.2,1.8) {1};\node at (0.2,2.2) {1};\node at (0.2,2.6) {1};\node at (0.2,3) {0};\node at (0.2,3.4) {1};\node at (0.2,3.8) {1};
\node at (0.6,0.2) {1};\node at (0.6,0.6) {1};\node at (0.6,1) {1};\node at (0.6,1.4) {1};\node at (0.6,1.8) {1};\node at (0.6,2.2) {1};\node at (0.6,2.6) {1};\node at (0.6,3) {0};\node at (0.6,3.4) {1};\node at (0.6,3.8) {1};
\node at (1,0.2) {1};\node at (1,0.6) {1};\node at (1,1) {1};\node at (1,1.4) {1};\node at (1,1.8) {1};\node at (1,2.2) {1};\node at (1,2.6) {1};\node at (1,3) {1};\node at (1,3.4) {1};\node at (1,3.8) {1};
\node at (1.4,0.2) {1};\node at (1.4,0.6) {1};\node at (1.4,1) {1};\node at (1.4,1.4) {1};\node at (1.4,1.8) {1};\node at (1.4,2.2) {1};\node at (1.4,2.6) {1};\node at (1.4,3) {1};\node at (1.4,3.4) {1};\node at (1.4,3.8) {1};
\node at (1.8,0.2) {1};\node at (1.8,0.6) {0};\node at (1.8,1) {0};\node at (1.8,1.4) {1};\node at (1.8,1.8) {1};\node at (1.8,2.2) {1};\node at (1.8,2.6) {1};\node at (1.8,3) {1};\node at (1.8,3.4) {1};\node at (1.8,3.8) {1};
\node at (2.2,0.2) {1};\node at (2.2,0.6) {1};\node at (2.2,1) {1};\node at (2.2,1.4) {1};\node at (2.2,1.8) {1};\node at (2.2,2.2) {0};\node at (2.2,2.6) {1};\node at (2.2,3) {1};\node at (2.2,3.4) {1};\node at (2.2,3.8) {1};
\node at (2.6,0.2) {1};\node at (2.6,0.6) {1};\node at (2.6,1) {1};\node at (2.6,1.4) {1};\node at (2.6,1.8) {1};\node at (2.6,2.2) {0};\node at (2.6,2.6) {0};\node at (2.6,3) {1};\node at (2.6,3.4) {1};\node at (2.6,3.8) {1};
\node at (3,0.2) {1};\node at (3,0.6) {1};\node at (3,1) {1};\node at (3,1.4) {1};\node at (3,1.8) {1};\node at (3,2.2) {0};\node at (3,2.6) {1};\node at (3,3) {1};\node at (3,3.4) {1};\node at (3,3.8) {1};
\node at (3.4,0.2) {1};\node at (3.4,0.6) {1};\node at (3.4,1) {1};\node at (3.4,1.4) {1};\node at (3.4,1.8) {1};\node at (3.4,2.2) {0};\node at (3.4,2.6) {1};\node at (3.4,3) {1};\node at (3.4,3.4) {1};\node at (3.4,3.8) {0};
\node at (3.8,0.2) {1};\node at (3.8,0.6) {1};\node at (3.8,1) {1};\node at (3.8,1.4) {1};\node at (3.8,1.8) {1};\node at (3.8,2.2) {1};\node at (3.8,2.6) {1};\node at (3.8,3) {1};\node at (3.8,3.4) {0};\node at (3.8,3.8) {0};
\draw (0.1,0)--(0,0)--(0,4)--(0.1,4);
\draw (3.9,0)--(4,0)--(4,4)--(3.9,4);
\end{tikzpicture}
So war mein Versuch sie einzulesen: \\[5mm]
\begin{tikzpicture}
\begin{axis}[
ticks=none,
axis x line=none,
axis y line=none,
ybar,
xtick=0,
ymin=0,
ymax =4,
xmax = 4,
xmin = 0,
width = 4cm,
height = 4cm,
]
\addplot+[
only marks,
visualization depends on=\thisrow{val} \as \val,
nodes near coords=\pgfmathprintnumber{\val},
every node near coord/.append style={
black,
inner sep=1pt,
yshift=0ex
}
] table [col sep=comma] {matrixData.csv};
\end{axis}
\draw (0.1,0)--(0,0)--(0,4)--(0.1,4);
\draw (3.9,0)--(4,0)--(4,4)--(3.9,4);
\end{tikzpicture}
\end{document}
[/code]
Weiß jemand Rat? Danke schonmal für Hilfe :)
PS: csv-Datei im Anhang