TikZ заполняет границу нулевой ширины

TikZ заполняет границу нулевой ширины

Я пытаюсь создать график плотности с помощью TikZ, используя \fillплотно сложенные прямоугольники. Тонкие нежелательные границы на изображении, являются ли они артефактом рендеринга или особенностью fill? Можно ли их устранить/сгладить?

\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}

увеличить изображение

введите описание изображения здесь

решение1

Я думаю, что это артефакт PDF-ридера. Я получаю белые линии в evince и темные линии в AR9/Linux, оба в зависимости от масштаба просмотра.

Если граница области заливки не лежит на границе пикселя, то просмотрщик PDF должен решить, как раскрасить эти пиксели границы. Тогда в evince они остаются пустыми, а в AR они получают цвет из обеих областей заливки ( opacity=75).

Поэтому я бы использовал растровое изображение вместо этого. Например, вашпервое изображение имеет 26 столбцов. После масштабирования в gimp до ширины 26 пикселей я получаюизображениес 26 x 37 пикселей:xUnJo.png

В документе TeX изображение снова масштабируется, например:

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

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

Результат

Прозрачность

Файл в вопросе использует opacity=0.75. Есть два способа поддержать это с помощью растровых изображений:

  • PNG поддерживает прозрачность с помощью альфа-канала.
  • Растровое изображение может быть создано без прозрачности (также размер файла должен быть меньше без альфа-канала). А прозрачность добавляется, когда изображение включено.

Генерация растрового изображения

  • Прямой подход.

    Цветовые значения записываются непосредственно в файл изображения.Портативный PixMapэто простой формат, потому что он знает версию ASCII. Пример для 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
    

    Затем изображение можно преобразовать в PNG, например, с помощьюpnmtopngинструментов Netpbm:

    pnmtopng <myimage.ppm >myimage.png
    
  • Косвенный подход.

    Переводится tikzpictureна отдельную страницу/документ без полей. Затем PDF-версию можно преобразовать в изображение с количеством столбцов/строк в виде ширины/высоты в пикселях. Пример преобразования с помощью ImageMagick и изображение с 26 столбцами и 37 строками:

    convert -resize 26x37 myimage.pdf myimage.png
    

Связанный контент