TikZ füllt den Rand mit der Breite Null

TikZ füllt den Rand mit der Breite Null

Ich versuche, mit TikZ ein Dichtediagramm zu erstellen \fill, indem ich dicht gestapelte Rechtecke verwende. Sind die dünnen, unerwünschten Ränder im Bild ein Artefakt der Darstellung oder ein Merkmal von fill? Können sie eliminiert/geglättet werden?

\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgf}
\usepackage{gnuplot-lua-tikz}   %for colors
\begin{document}
\pagestyle{empty}
\begin{tikzpicture}[xscale=0.05,yscale=0.3]
\fill[rgb color={0.40,0.50,0.01}, opacity=0.75] (0.000,0.00) -- (2.000,0.00) -- (2.000,0.40) -- (0.000,0.40) -- cycle;
\fill[rgb color={0.40,0.50,0.01}, opacity=0.75] (0.000,0.40) -- (2.000,0.40) -- (2.000,0.80) -- (0.000,0.80) -- cycle;
\fill[rgb color={0.40,0.50,0.01}, opacity=0.75] (0.000,0.80) -- (2.000,0.80) -- (2.000,1.20) -- (0.000,1.20) -- cycle;
\fill[rgb color={0.40,0.50,0.01}, opacity=0.75] (0.000,1.20) -- (2.000,1.20) -- (2.000,1.60) -- (0.000,1.60) -- cycle;
\fill[rgb color={0.40,0.50,0.01}, opacity=0.75] (0.000,1.60) -- (2.000,1.60) -- (2.000,2.00) -- (0.000,2.00) -- cycle;
\fill[rgb color={0.68,0.74,0.48}, opacity=0.75] (0.000,2.00) -- (2.000,2.00) -- (2.000,2.40) -- (0.000,2.40) -- cycle;
\fill[rgb color={0.95,0.96,0.92}, opacity=0.75] (0.000,2.40) -- (2.000,2.40) -- (2.000,2.80) -- (0.000,2.80) -- cycle;
\fill[rgb color={0.99,0.99,0.98}, opacity=0.75] (0.000,2.80) -- (2.000,2.80) -- (2.000,3.20) -- (0.000,3.20) -- cycle;
% ...
\end{tikzpicture}
\end{document}

Bild vergrößern

Bildbeschreibung hier eingeben

Antwort1

Ich denke, es ist ein Artefakt des PDF-Readers. Ich bekomme weiße Linien in Evince und dunkle Linien in AR9/Linux, beides abhängig vom Anzeigemaßstab.

Liegt die Randlinie der Füllfläche nicht auf einem Pixelrand, so muss der PDF-Viewer entscheiden, wie diese Randpixel eingefärbt werden. In evince bleiben sie dann frei, in AR erhalten sie die Farbe aus beiden Füllflächen ( opacity=75).

Daher würde ich stattdessen ein Bitmap-Bild verwenden. Beispiel: Ihrerstes Bild hat 26 Spalten. Nach dem Skalieren in Gimp auf eine Breite von 26 Pixeln erhalte ich eineBildmit 26 x 37 Pixeln:xUnJo.png

Im TeX-Dokument wird das Bild noch einmal vergrößert, zB:

\documentclass{article}
\usepackage{graphicx}
\pagestyle{empty}

\begin{document}
\noindent
\includegraphics[width=\linewidth]{xUnJo.png}
\end{document}

Ergebnis

Transparenz

Die Datei in der Frage verwendet opacity=0.75. Es gibt zwei Möglichkeiten, dies mit Bitmaps zu unterstützen:

  • PNG unterstützt Transparenz durch einen Alphakanal.
  • Das Bitmap kann ohne Transparenz erstellt werden (ohne Alphakanal sollte auch die Dateigröße kleiner sein). Und die Transparenz wird hinzugefügt, wenn das Bild eingefügt wird.

Bitmap-Generierung

  • Direkte Annäherung.

    Die Farbwerte werden direkt in die Bilddatei geschrieben.Tragbares PixMapist ein einfaches Format, da es eine ASCII-Version kennt. Beispiel für das MWE:

    P3
    # The P3 means RGB colors in ASCII.
    # Next line: 1 row, 9 columns (from bottom to top)
    # Following line: max. color
    # Then image data as integers.
    1 9
    255
    252 252 250
    242 245 235
    173 189 122
    173 189 122
    102 127 3
    102 127 3
    102 127 3
    102 127 3
    102 127 3
    

    Anschließend kann das Bild in PNG umgewandelt werden, z.B. mitpnmtopngder Netpbm-Tools:

    pnmtopng <myimage.ppm >myimage.png
    
  • Indirekter Ansatz.

    Das tikzpicturekommt in eine separate Seite/Dokument ohne Ränder. Anschließend kann die PDF-Version in ein Bild mit der Anzahl der Spalten/Zeilen als Pixelbreite/-höhe umgewandelt werden. Konvertierungsbeispiel mit ImageMagick und einem Bild mit 26 Spalten und 37 Zeilen:

    convert -resize 26x37 myimage.pdf myimage.png
    

verwandte Informationen