我想知道如何才能获得类似于以更“老派”风格显示条形的图像的纹理。
我只能应用非常常见的风格
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
title=Title,
xbar,
xmajorgrids = true,
bar width=6mm,
width=12cm, height=5.5cm,
enlarge y limits=0.2,
xlabel={\#number},
symbolic y coords={A,B,C,D},
ytick=data,
nodes near coords, nodes near coords align={horizontal},
]
\addplot coordinates {(1,A) (7,B) (5,C)(2,D)};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
以下是一种方法元帖子定义了stipple
一个与路径一起使用的新动词,而不是fill
。
我并没有尝试让它变得非常稳健(比如检查参数是否真的是一条封闭的路径等),您可能想尝试一下用于绘制点的笔的大小和/或形状,以及间距,以及使用的随机灰色量,但这可能是一个起点。对于大面积,您将得到很多点,这将使输出更大,处理速度更慢。
prologues := 3;
outputtemplate := "%j%c.eps";
def stipple primary pp =
interim bboxmargin := 0;
for x = xpart llcorner bbox pp step 1/4 until xpart urcorner bbox pp:
for y = ypart llcorner bbox pp step 1/4 until ypart urcorner bbox pp:
drawdot (x,y) withpen pencircle scaled 1/2 withcolor (1/4 + uniformdeviate 1/2);
endfor
endfor
enddef;
beginfig(1);
path a, b, c;
a = unitsquare xscaled 21 yscaled 34;
b = unitsquare xscaled 21 yscaled 55 shifted 34 right;
c = unitsquare xscaled 21 yscaled 89 shifted 68 right;
forsuffixes $=a,b,c:
stipple $; draw $;
endfor
endfig;
end.
注意:要在 MP 中获得灰色阴影,语法是withcolor n
其中n
是数字变量。n
小于或等于 0 的值被视为黑色;大于或等于 1 的值被视为白色;介于两者之间的值被视为灰色阴影。
上面发布的代码对于矩形路径(其中 的bbox
形状与路径相同)运行良好,但对于任何其他类型的形状(例如圆形)则运行不佳。您可以通过点画然后剪切bbox
到路径来解决这个问题。这是一个改进的例程:
prologues := 3;
outputtemplate := "%j%c.eps";
vardef stipple primary pp =
save ff; picture ff; ff=image(
for x = xpart llcorner bbox pp step 1/4 until xpart urcorner bbox pp:
for y = ypart llcorner bbox pp step 1/4 until ypart urcorner bbox pp:
drawdot (x,y) withpen pencircle scaled 1/2 withcolor (1/4 + uniformdeviate 1/2);
endfor
endfor
); clip ff to pp; draw ff;
enddef;
beginfig(1);
path a, b, c, d;
a = unitsquare xscaled 21 yscaled 34;
b = unitsquare xscaled 21 yscaled 55 shifted 34 right;
c = unitsquare xscaled 21 yscaled 89 shifted 68 right;
d = fullcircle scaled 21 shifted 20 left;
forsuffixes $=a,b,c,d:
stipple $; draw $;
endfor
endfig;
end.
应该可以正确填充任意闭合路径。