我正在尝试使用 Matlab2Tikz 从 Matlab 中提取一些用于 XeLaTex 的图。除了带有对数对数刻度的图(我添加了一个图,见下文),其他一切都很顺利。左下方的图显示了对数对数刻度,y 轴上有 10 进制刻度标签,x 轴上有对数刻度但没有 10 进制。执行 matlab2tikz 命令时,我得到了 10 进制 x 刻度标签,这显然是我不需要的。相反,我希望它能像 Matlab 绘制的那样。
我在 stackexchange 上没有发现类似的问题,所以我想我会自己问一下。
提前非常感谢您!
编辑:这是代码:
\begin{axis}[%
width=\fwidth,
height=\fheight,
scale only axis,
separate axis lines,
every outer x axis line/.append style={white!15!black},
every x tick label/.append style={font=\color{white!15!black}},
xmode=log,
xmin=1,
xmax=8,
xminorticks=true,
every outer y axis line/.append style={white!15!black},
every y tick label/.append style={font=\color{white!15!black}},
ymode=log,
ymin=0.0001,
ymax=1,
yminorticks=true,
ylabel={E(K)},
at=(plot3.below south west),
anchor=above north west
]
\addplot [color=red,solid,mark=o,mark options={solid},forget plot]
table[row sep=crcr]{1 0.0711717716815872\\
2 0.0115273918542792\\
3 0.00554837295582636\\
4 0.00390493819982627\\
5 0.00257462558614867\\
6 0.000676170571559625\\
7 0.000211268404410399\\
8 0.000179355383693616\\
};
\end{axis}
答案1
对于 y 轴,您可以使用ytickend
提供所需刻度位置的列表(它允许...
快捷方式)。对于您的情况,您可以使用
ytickten={-4,-2,0}
对于 x 轴,您需要使用以下方法更改刻度表示
xtick=data,
xticklabel=\pgfmathparse{e^\tick}\pgfmathprintnumber{\pgfmathresult}
完整示例:
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{loglogaxis}[%
scale only axis,
separate axis lines,
every outer x axis line/.append style={white!15!black},
xmode=log,
xmin=1,
xmax=8,
every outer y axis line/.append style={white!15!black},
every y tick label/.append style={font=\color{white!15!black}},
ymode=log,
ymin=0.0001,
ymax=1,
ylabel={E(K)},
anchor=above north west,
ytickten={-4,-2,0},
xtick=data,
xticklabel=\pgfmathparse{e^\tick}\pgfmathprintnumber{\pgfmathresult}
]
\addplot [color=red,solid,mark=o,mark options={solid},forget plot]
table[row sep=crcr]{
1 0.0711717716815872\\
2 0.0115273918542792\\
3 0.00554837295582636\\
4 0.00390493819982627\\
5 0.00257462558614867\\
6 0.000676170571559625\\
7 0.000211268404410399\\
8 0.000179355383693616\\
};
\end{loglogaxis}
\end{tikzpicture}
\end{document}
答案2
对我来说,现有的答案不能正常工作,因为一些值仍然以不同的方式表示,例如20
呈现为19.99
。
现在,我终于通过在文件的选项log ticks with fixed point
中插入该行来解决问题:\begin{axis}[...]
.tikz
\begin{axis}[%
...,
log ticks with fixed point
]
...
使用matlab2tikz
,可以使用以下代码实现此目的:
matlab2tikz(tikzFileName, ...
'extraaxisoptions', 'log ticks with fixed point'... % this line is new
);