我在 Latex 中有这个半对数刻度:
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{semilogxaxis}[xmin=1, xmax=1e5, domain=1:1e5]
\addplot {(1/(2*pi*x*0.000001))/((sqrt((39.33)^2+(1/(2*pi*x*0.000001))^2))};
\end{semilogxaxis}
\end{tikzpicture}
\end{document}
我需要的 x-grid 是这样的:
5*10^-2-----5*10^-1-----5*10^0-----5*10^1-----5*10^2。
答案1
这是一种可能的方法。
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}% <- change if you have an older version
\begin{document}
\begin{tikzpicture}
\begin{semilogxaxis}[xmin=1, xmax=1e5, domain=1:1e5,
xtick={2,20,200,2000,2e4},xticklabel={$\ifnum\ticknum=0
2
\else
2\cdot 10^{\ticknum}
\fi$}]
\addplot {(1/(2*pi*x*0.000001))/((sqrt((39.33)^2+(1/(2*pi*x*0.000001))^2))};
% cross check
% \path (axis cs:200,0) node[circle,draw]{};
\end{semilogxaxis}
\end{tikzpicture}
\end{document}
或者,对于评论中的问题:
\documentclass[border=3mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17,% <- change if you have an older version
width=12cm}
\begin{document}
\begin{tikzpicture}
\begin{semilogxaxis}[xmin=1e-2, xmax=1e5, domain=1e-2:1e5,
xtick={2e-2,2e-1,2,20,200,2000,2e4},xticklabel={$\ifnum\the\numexpr\ticknum-2=0
2
\else
2\cdot 10^{\the\numexpr\ticknum-2}
\fi$}]
\addplot {(1/(2*pi*x*0.000001))/((sqrt((39.33)^2+(1/(2*pi*x*0.000001))^2))};
\end{semilogxaxis}
\end{tikzpicture}
\end{document}
如何想出这类东西?假设你觉得 pgfplots 手册太难理解,你可以关注这一策略:执行 Google 图片搜索(或普通 Google 搜索)
site:tex.stackexchange.com <search term(s)>
并查看其他人的做法。理论上,帖子的投票应该表明帖子有多好(但实际上,投票受帖子质量以外的许多因素的影响)。这可能会给你一个起点。通常,特别是通过更多的练习,你将能够解决你的问题。如果没有,那么你有一个不错的起点,这个问题会比“空洞”的问题更受欢迎,因为你自己的尝试有助于使问题更清晰。