Я пытаюсь создать график плотности с помощью 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 пикселей:
В документе 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