PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Womit sparse matrix abbilden?



sindel
28-08-2010, 09:58
Hallo,

ich suche ein Tool um spärlich- bzw dünnbesetzte Matrizen (sparse matrices) abzubilden.
Es sollte dabi pro Matrix ein quadratisches Kästchen mit dünneren Linien als Raster darin sein. Die Matrizen selber sollen keine Zahlenwerte enthalten, sondern lediglich schwarz ausgefüllte Kästchen enthalten, wenn sie denn besetzt sind.
Hätte jemand eine Idee, denn die SuMa-Recherche bleibt bislang ergebnislos.
Grüße und Danke
sindel

voss
28-08-2010, 11:14
ich suche ein Tool um spärlich- bzw dünnbesetzte Matrizen (sparse matrices) abzubilden.
Es sollte dabi pro Matrix ein quadratisches Kästchen mit dünneren Linien als Raster darin sein. Die Matrizen selber sollen keine Zahlenwerte enthalten, sondern lediglich schwarz ausgefüllte Kästchen enthalten, wenn sie denn besetzt sind.
Hätte jemand eine Idee, denn die SuMa-Recherche bleibt bislang ergebnislos.


wenn deine Daten als Matrix vorliegen, kannst du psMatrixPlot benutzen.
=> Doku pstricks-add S.77ff

Herbert

sindel
28-08-2010, 13:06
@voss: danke!

leider kommt

/tmp/tmpgTF28E.tex:12: Undefined control sequence.
<recently read> \c@lor@to@ps
l.12 \psMatrixPlot
[dotsize=1.1cm,dotstyle=square*,linecolor=magenta]%

in der ersten Zeile mit \psMatrixPlot. Außer pstricks, pstricks-add habe ich nichts gefunden was ich importieren müsste im manual.
Minimalbeispiel aus dem manual:

\usepackage{pstricks}
\usepackage{pstricks-add}
\begin{document}
\begin{pspicture}(-0.5,-0.75)(11,11)
\psaxes{->}(11,11)
\psMatrixPlot[dotsize=1.1cm,dotstyle=square*,linecolor=magenta]%
{10}{10}{matrix.data}
\psMatrixPlot[dotsize=.5cm,dotstyle=o,ChangeOrder]{10}{10}{matrix.data}
\end{pspicture}
...


pstricks-add ist bei mir in v.3.35 (Ubuntu Lucid) laut manual und dort ist eigtl bereits \psMatrixPlot vorhanden.
Die Datei matrix.data habe ich als Textdokument angelegt, oder was meint das Manual mit "PostScript matrix"?

psMatrixPlot könnte ganz gut aussehen, aber ich bin auch noch offen für andere Vorschläge.
Grüße
sindel

voss
28-08-2010, 13:18
in der ersten Zeile mit \psMatrixPlot. Außer pstricks, pstricks-add habe ich nichts gefunden was ich importieren müsste im manual.
Minimalbeispiel aus dem manual:


pstricks-add ist bei mir in v.3.35 (Ubuntu Lucid) laut manual und dort ist eigtl bereits \psMatrixPlot vorhanden.
Die Datei matrix.data habe ich als Textdokument angelegt, oder was meint das Manual mit "PostScript matrix"?


Entweder die Schiene latex=>dvips=ps2pdf oder alternativ
\usepackage{auto-pst-pdf}
und dann
pdflatex -shell-escape <datei>

Sie auch http://tug.org/PSTricks/main.cgi?file=pdf/pdfoutput#autopstpdf

Herbert

sindel
28-08-2010, 15:35
danke, geht nun! (Hatte es in "gummi" drin, was ich zum ausprobieren super finde, es kann nur pdflatex und xelatex).

Habe nun mit \psgrid rumgespielt, aber das sieht noch nicht toll aus. Die Punkte liegen genau auf dem Grid. Und auch das genaue Ausfüllen der Zelle wird ja problematisch bleiben.


\begin{pspicture}(0,0)(5,5)
\psgrid[subgriddiv=1,gridwidth=0.1cm](-0.5,-0.5)(5,5)
\psMatrixPlot[dotsize=0.5cm,dotstyle=square*,linecolor=black]%
{10}{10}{matrix.data}
\end{pspicture}
Hier das Ergebnis:
http://img153.imageshack.us/img153/29/sparse1.png

Ein Beispiel wie es am Ende aussehen sollte: http://img507.imageshack.us/img507/9104/sparse0.png (rechts gehts mit anderen Matrizen weiter, getrennt durch dickere Linien)

voss
28-08-2010, 15:49
danke, geht nun! (Hatte es in "gummi" drin, was ich zum ausprobieren super finde, es kann nur pdflatex und xelatex).

Habe nun mit \psgrid rumgespielt, aber das sieht noch nicht toll aus. Die Punkte liegen genau auf dem Grid. Und auch das genaue Ausfüllen der Zelle wird ja problematisch bleiben.



stell mal irgendwo einen Datensatz zur Verfügung.

Herbert

sindel
28-08-2010, 16:28
ja, viel gibts nicht zu teilen:
ein texscript ähnlich zu oben und zwei kleine Matrizen:
http://rapidshare.com/files/415655986/matrix.zip
Da ich nur kleine Beispiele abbilden möchte, ist das Eingabeformat der Matrizen relativ egal. Am besten so wie dort (getrennt durch ein Zeichen) damit man es mit Texteditor schnell anpassen kann, in einer oder einzelnen Dateien.

Und schon mal danke für die Mühen. :-)
Grüße
sindel

voss
28-08-2010, 17:04
ja, viel gibts nicht zu teilen:
ein texscript ähnlich zu oben und zwei kleine Matrizen:
http://rapidshare.com/files/415655986/matrix.zip
Da ich nur kleine Beispiele abbilden möchte, ist das Eingabeformat der Matrizen relativ egal. Am besten so wie dort (getrennt durch ein Zeichen) damit man es mit Texteditor schnell anpassen kann, in einer oder einzelnen Dateien.


soll es so sein?

Herbert

sindel
28-08-2010, 17:15
ja, kommt ihm schon sehr nahe ^^
Die Nummerierung sollte noch weg.
Und wieso zeigt es eigtl die Matrix gespiegelt an? Im Datensatz ist ja die Einheitsmatrix (links oben nach rechts unten) enthalten.
Und wie hängt man weitere Matrizen an und separiert sie durch dickere Linien?
Grüße
sindel

EDIT: Das andere Beispiel oben ist in meinen Augen die perfekte Abbildung: Schmale Linien trennen die Zellen, die Blöcke/Matrizen haben dicke Linien.

voss
28-08-2010, 17:25
ja, kommt ihm schon sehr nahe ^^
Die Nummerierung sollte noch weg.
Und wieso zeigt es eigtl die Matrix gespiegelt an? Im Datensatz ist ja die Einheitsmatrix (links oben nach rechts unten) enthalten.
Und wie hängt man weitere Matrizen an und separiert sie durch dickere Linien?
Grüße
sindel

EDIT: Das andere Beispiel oben ist in meinen Augen die perfekte Abbildung: Schmale Linien trennen die Zellen, die Blöcke/Matrizen haben dicke Linien.

geht alles. Du brauchst die pstricks-add.tex von
http://archiv.dante.de/~herbert/PSTricks-TDS/tex/generic/pstricks-add/
und dann kannst du mit \rput die Matrizen beliebig positionieren:

\documentclass{article}

\usepackage{pstricks-add}
\pagestyle{empty}

\begin{document}

\begin{pspicture}(0,0)(10,5)
\psgrid[subgriddiv=1,gridwidth=1.5pt,gridlabels=0pt](0,0)(10,5)
\psset{dotsize=1.15cm,dotstyle=square*,XYoffset=-0.5}
\psMatrixPlot[]{5}{5}{matrix0.data}
\psline[linewidth=4pt](5,0)(5,5)
\rput[lb](5,0){\psMatrixPlot{5}{5}{matrix1.data}}
\end{pspicture}

\end{document}


Herbert

sindel
28-08-2010, 17:29
ja sehr geil, fettes Dankeschön! Wo ist der "buy me a beer"-button?

sindel
29-08-2010, 01:34
Habe leider noch Probleme das bei mir zum Laufen zu bekommen, wegen 'XYoffset'.
Habe soeben noch versucht per Hand pstricks-add zu aktualisieren, aber das ging kräftig schief (hatte bislang noch nie ein Paket per Hand aktualisiert, immer nur Ubuntu-Quellen). Genau gesagt hatte ich pstricks-add von http://www.ctan.org/tex-archive/systems/texlive/tlnet/archive/#jh267146b655fb84198fe848b5e87d66ea in mein ~/texmf/ Verzeichnis kopiert (Unterordner dvips, tex, tlpkg), in der Hoffnung TexLive erkennt die akuellere Version im HomeVerzeichnis, bevorzugt vor der systemweiten Paket-Installation. Vielleicht lags ja an falscher Installation. Oder fehlt dann noch mehr?

Anbei die Fehlemeldung mit dem pstricks-add aus den Ubuntuquellen:

(/usr/share/texmf-texlive/tex/generic/pstricks/pstricks.tex
`PSTricks' v1.29 &lt;2009/05/19&gt; (tvz)
(/usr/share/texmf-texlive/tex/generic/pstricks/pstricks.con))
(/usr/share/texmf/tex/latex/xcolor/xcolor.sty
(/etc/texmf/tex/latex/config/color.cfg)
(/usr/share/texmf-texlive/tex/latex/graphics/dvips.def)))
(/usr/share/texmf-texlive/tex/generic/pstricks-add/pstricks-add.tex
(/usr/share/texmf-texlive/tex/generic/pstricks/pst-plot.tex
(/usr/share/texmf-texlive/tex/generic/multido/multido.tex
v1.41, 2004/05/18 <tvz>) v1.04, 2009/06/08)
(/usr/share/texmf-texlive/tex/generic/pstricks/pst-node.tex v1.01, 2008/11/26)
(/usr/share/texmf-texlive/tex/generic/pst-3d/pst-3d.tex
(/usr/share/texmf-texlive/tex/generic/xkeyval/pst-xkey.tex
(/usr/share/texmf-texlive/tex/latex/xkeyval/xkeyval.sty
(/usr/share/texmf-texlive/tex/generic/xkeyval/xkeyval.tex
(/usr/share/texmf-texlive/tex/generic/xkeyval/keyval.tex))))
`PST-3d' v1.00, 2005/09/03 (tvz))
(/usr/share/texmf-texlive/tex/generic/pstricks-add/pst-fp.tex
`pst-fp' v0.02, 2009/04/02 (hv))
(/usr/share/texmf-texlive/tex/generic/pst-math/pst-math.tex
`pst-math' v0.23 , (CJ,hv)) `pstricks-add' v3.35, 2009/10/12 (dr,hv)))
(./test_sparsematrix2.aux)

! Package xkeyval Error: `XYoffset' undefined in families `,pst-3d,pstricks-add
'.

See the xkeyval package documentation for explanation.
Type H &lt;return&gt; for immediate help.
...

l.10 ...ize=1.15cm,dotstyle=square*,XYoffset=-0.5}
Habe extra etwas mehr angehängt, da die Versionen angezeigt werden.

voss
29-08-2010, 10:01
Habe leider noch Probleme das bei mir zum Laufen zu bekommen, wegen 'XYoffset'.
Habe soeben noch versucht per Hand pstricks-add zu aktualisieren, aber das ging kräftig schief (hatte bislang noch nie ein Paket per Hand aktualisiert, immer nur Ubuntu-Quellen). Genau gesagt hatte ich pstricks-add von http://www.ctan.org/tex-archive/systems/texlive/tlnet/archive/#jh267146b655fb84198fe848b5e87d66ea in mein ~/texmf/ Verzeichnis kopiert (Unterordner dvips, tex, tlpkg), in der Hoffnung TexLive erkennt die akuellere Version im HomeVerzeichnis, bevorzugt vor der systemweiten Paket-Installation. Vielleicht lags ja an falscher Installation. Oder fehlt dann noch mehr?


Du kannst auch gnadenlos pstricks-add.tex über die aktuelle kopieren,
da es sowieso irgendwann die offizielle Version wird, bzw. jetzt schon ist.
Aktueller Ort:
kpsewhich pstricks-add.tex

Alternativ kannst du natürlich obigen Ort wählen, musst aber anschließend texhash laufen lassen, um die Datenbank zu aktualisieren. Im Notfall kann man jede Datei auch einfach in den Dokumentenordner packen, denn dort wird imemr zuerst gesucht.

Herbert

sindel
29-08-2010, 11:10
hm, habe mal testweise pstricks-add.tex und pstricks-add.sty in den Projekt-Ordner kopiert, dann bemerkt er die Änderungen ohne texhash oder mktexlsr. Dann kommen nun 17 Fehler^^.
Habe mal die ganze Ausgabe zugänglich gemacht: http://pastebin.de/9474
Kile geht den von Dir besagten Weg latex=>dvips=ps2pdf

Die Eingabe ist die aus deinem Posting (#10) und \begin{document} ist natürlich vorhanden.

voss
29-08-2010, 11:19
hm, habe mal testweise pstricks-add.tex und pstricks-add.sty in den Projekt-Ordner kopiert, dann bemerkt er die Änderungen ohne texhash oder mktexlsr. Dann kommen nun 17 Fehler^^.
Habe mal die ganze Ausgabe zugänglich gemacht: http://pastebin.de/9474
Kile geht den von Dir besagten Weg latex=>dvips=ps2pdf

Die Eingabe ist die aus deinem Posting (#10) und \begin{document} ist natürlich vorhanden.

Dein ganzes TeXLive ist nicht gerade aktuell, weil es Debian
ja eh nicht mit Aktualität hat ...
Das Beste wäre, du kopierst die
http://archiv.dante.de/~herbert/PSTricks-TDS.tgz
komplett über dein System. Duie Verzeichnisse in PSTricks-TDS
sind identisch zu dem, was bei dir in /usr/share/texmf/ liegt.
Danach texhash nicht vergessen.
Geändert haben sich vor allen Dingen die Dateien
pst-plot.tex
pst-node.tex
pstricks-add.tex
pstricks.tex
pstricks.sty

Herbert

sindel
29-08-2010, 12:29
musste es mehrmals runterladen, dauerte daher länger.
Habe es in mein ~/texmf/ entpackt, wohl mehr als ich benötigen würde, und nach texhash konnte ich das Dokument bauen.
Herzlichen Dank, Herbert!