遗憾的是,我对图形的想法与我目前能够使用tikz
和制作的图形之间存在一些(轻描淡写)不一致pgfplots
。我想制作一个看起来像这样的图形
然而我对它的了解有限tikz
,pgfplots
只能让我想出这个(我提前道歉)可怕的 MWE:
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xbar=0pt,
enlargelimits=0.15,
width=.9\textwidth,
label style={font=\footnotesize},
ytick={0,...,3},
yticklabels = {AA, BB, CC},
ytick=data,
every axis plot/.append style={fill},
y = 0.4cm,
xmode=log,log basis x=10,
xbar stacked,
axis on top
]
\addplot coordinates {(3000, 0) (832, 1) (1E7, 2)};
\end{axis}
\end{tikzpicture}
\end{document}
我经历了文档但pgfplots
找不到类似的东西作为起点,很快就变得畏惧。
有谁可以引导一个可怜的灵魂吗?
答案1
这个图用 Ti 画起来可能更容易钾Z,但如果你想使用pgfplots
,这也许可以作为一个起点(灵感来自这个答案):
\documentclass[border=2mm]{standalone}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.18}
\begin{document}%
\begin{tikzpicture}
\pgfplotstableread{
Label Start Stop
1 600 60000
2 1 3000
3 1e5 1e7
}\datatable
\pgfplotsset{
every axis/.style={
width=.9\textwidth,
y=0.4cm,
bar width=0.4cm,
enlarge y limits=0.25,
label style={font=\footnotesize},
axis on top,
xbar stacked,
xmin=1, xmax=1e7,
xmode=log,
ytick={1,...,3},
yticklabels={CC, BB, AA},
ytick style={draw=none},
extra y ticks={1.5,2.5},
extra y tick labels={},
extra y tick style={grid=minor},
minor tick style={draw=none},
xlabel={FREQUENCY (Hz)},
clip=false,
},
minimum/.style={forget plot, draw=none, fill=none},
}
\begin{axis}
\draw [<->, thick] (axis cs:1,3.5) -- (axis cs:1e2,3.5) node [midway,above, font=\footnotesize] {XXX};
\draw [<->, thick] (axis cs:1e3,3.5) -- (axis cs:1.5e4,3.5) node [midway,above, font=\footnotesize] {YYY};
\draw [<->, thick] (axis cs:1e5,3.5) -- (axis cs:1e7,3.5) node [midway,above, font=\footnotesize] {ZZZ};
\addplot [minimum] table [x=Start, y=Label] {\datatable};
\addplot table [y=Label, x expr=\thisrowno{2}-\thisrowno{1}] {\datatable};
\end{axis}
\end{tikzpicture}
\end{document}