如何更改 pgfplots 中的字体系列?

如何更改 pgfplots 中的字体系列?

我正在使用classicthesisLyX 中的包来排版我的论文。我有一个用 制作的图表pgfplots。它使用与文本其他地方相同的数学字体,这与我的其他图表(从 Matlab 导入)不一致,其中 Arial 用于刻度和轴标签。所以我的问题是,我如何更改图表中使用的文本的字体系列pgfplots(即标题字体不应更改)?最小的 TeX 代码将是:

\documentclass[12pt,a4paper]{report}
\usepackage[latin1]{inputenc}
\usepackage[sc,osf]{mathpazo}
\usepackage[euler-digits]{eulervm}
\usepackage{pgfplots}
\pgfplotsset{compat=1.3}
\begin{document}
\begin{figure}
\centering
\pgfplotsset{every axis/.append style={
thick,
tick style={semithick}}}
\begin{tikzpicture}
\begin{axis}[
height=8cm,
width=15cm,
xlabel = {$x$},
ylabel = {$\phi(x)$},
domain = 0:1,
xtick={0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0},
ytick={0.0,0.1,0.2,0.3,0.4,0.5},
grid=major,
no markers,
cycle list name=linestyles
]
\addplot {0.5-abs(x-0.5)};
\end{axis}
\end{tikzpicture}
\caption{Solution of Eikonal equation on a 1D domain $\Omega=[0;1]$}
\end{figure}
\end{document}

因此,我希望所有刻度数字和x标签\phi(x)都采用 Arial 格式,而底部标题保留为 Palatino 格式。

答案1

仅使用\pgfplotsset\sffamily可能对您来说不够,因为您的数字和标签处于数学模式。可以使用包来实现sansmath,例如

\usepackage{helvet}
\usepackage[eulergreek]{sansmath}
\pgfplotsset{
  tick label style = {font=\sansmath\sffamily},
  every axis label = {font=\sansmath\sffamily},
  legend style = {font=\sansmath\sffamily},
  label style = {font=\sansmath\sffamily}
}

不过,如果您使用 ,您可能仍需要处理希腊字母eulervm。没有该包,\sansmath效果很好。或者,省略标签的无衬线样式,并在这个特定位置手动执行,例如

xlabel = {$\mathsf{x}$},
ylabel = {$\phi\mathsf{(x)}$},

总之,我用你的代码得到了所有无衬线字体的标签,而标题仍然保留了衬线字体:

阴谋

答案2

这更像是一个扩展的评论而不是答案,但我认为它可能对其他人有用。

遵循手册第 75 页pgfplots(修订版 1.17(2020/02/29))

\pgfplotsset{
  xticklabel={$\mathsf{\pgfmathprintnumber{\tick}}$},
  yticklabel={$\mathsf{\pgfmathprintnumber{\tick}}$},
}

相关内容