简体   繁体   English

如何使用带有 usetex 的 matplotlib 为轴标签(数字)设置 Helvetica 字体?

[英]How to set Helvetica font for axes labels (numbers) with matplotlib with usetex on?

I set the font style in the matplotlibrc param file to Helvetica (sans serif) which is already installed and I set text.usetex to 'true' but the axes fonts use serif fonts.我将 matplotlibrc 参数文件中的字体样式设置为已安装的 Helvetica(无衬线),并将 text.usetex 设置为“true”,但轴字体使用衬线字体。 My matplotlibrc parameter file is given below:我的 matplotlibrc 参数文件如下:

lines.linewidth : 1.0               # Line width (in points).
lines.linestyle : -                 # Line style.
lines.color : blue                  # Line color.


font.family : sans-serif
font.sans-serif : Helvetica, Arial, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Avant Garde, sans-serif

text.color : black
text.usetex : true


axes.facecolor : FFFFFF         # axes background color
axes.edgecolor : 000000         # axes edge color
axes.linewidth : 1.0            # edge linewidth
axes.grid : true                # display grid or not
axes.titlesize : large          # fontsize of the axes title
axes.labelsize : 9              # fontsize of the x any y labels
axes.labelweight : normal       # weight of the x and y labels
axes.labelcolor : 000000
axes.axisbelow : true
axes.formatter.limits : -7, 7
axes.color_cycle : E41A1C, 377EB8, 4DAF4A, 984EA3, FF7F00, FFFF33, A65628, F781BF, 999999       # color cycle for plot lines
polaraxes.grid : true           # display grid on polar axes
axes3d.grid : true              # display grid on 3d axes


xtick.major.size : 4            # Major tick size (in points).
xtick.minor.size : 2            # Minor tick size (in points).
xtick.major.width : 1           # Major tick width (in points).
xtick.minor.width : 1           # Minor tick width (in points).
xtick.major.pad : 6             # Distance to major tick label (in points).
xtick.minor.pad : 6             # Distance to the minor tick label (in points).
xtick.color : 000000            # Tick label colors.
xtick.labelsize : 8             # Tick label font size (in points).
xtick.direction : in            # Tick direction

ytick.major.size : 4            # Major tick size (in points).
ytick.minor.size : 2            # Minor tick size (in points).
ytick.major.width : 1           # Major tick width (in points).
ytick.minor.width : 1           # Minor tick width (in points).
ytick.major.pad : 6             # Distance to major tick label (in points).
ytick.minor.pad : 6             # Distance to the minor tick label (in points).
ytick.color : 000000            # Tick label colors.
ytick.labelsize : 8             # Tick label font size (in points).
ytick.direction : in            # Tick direction


grid.color : 999999             # Grid color.
grid.linestyle : :              # Grid line style.
grid.linewidth : 0.5            # Grid line width (in points).
grid.alpha : 1.0                # Grid line transparency.


legend.fancybox : true      # if true, use a rounded box for the
legend.isaxes : true
legend.numpoints : 1            # the number of points in the legend line
legend.fontsize : 9
legend.borderpad : 0.5          # border whitespace in fontsize units
legend.markerscale : 1.0        # the relative size of legend markers vs. original
legend.labelspacing : 0.5       # the vertical space between the legend entries in fraction of fontsize
legend.handlelength : 2.        # the length of the legend lines in fraction of fontsize
legend.handleheight : 0.7       # the height of the legend handle in fraction of fontsize
legend.handletextpad : 0.8      # the space between the legend line and legend text in fraction of fontsize
legend.borderaxespad : 0.5      # the border between the axes and legend edge in fraction of fontsize
legend.columnspacing : 2.       # the border between the axes and legend edge in fraction of fontsize
legend.shadow : false
legend.frameon : true           # whether or not to draw a frame around legend
legend.scatterpoints : 1        # number of scatter points

How do I get the axes fonts to use Helvetica sans?如何让轴字体使用 Helvetica sans?

Update更新

I tried using the code:我尝试使用代码:

plt.rcParams['font.family'] = 'Helvetica'

But this is the error I get:但这是我得到的错误:

/usr/lib/pymodules/python2.7/matplotlib/font_manager.py:1236: UserWarning: findfont: Font family ['Helvetica'] not found. Falling back to Bitstream Vera Sans
  (prop.get_family(), self.defaultFamily[fontext]))
/usr/lib/pymodules/python2.7/matplotlib/font_manager.py:1246: UserWarning: findfont: Could not match :family=Bitstream Vera Sans:style=normal:variant=normal:weight=normal:stretch=normal:size=medium. Returning /usr/share/matplotlib/mpl-data/fonts/ttf/cmb10.ttf
  UserWarning)
/usr/lib/pymodules/python2.7/matplotlib/font_manager.py:1246: UserWarning: findfont: Could not match :family=Bitstream Vera Sans:style=normal:variant=normal:weight=normal:stretch=normal:size=large. Returning /usr/share/matplotlib/mpl-data/fonts/ttf/cmb10.ttf
  UserWarning)

Have you added the .ttf files to where matplotlib can find them?您是否已将.ttf文件添加到matplotlib可以找到它们的位置? "Installed" for the OS may not mean "installed" for matplotlib .操作系统的“已安装”可能并不意味着matplotlib “已安装”。 Check out this blog post: http://blog.olgabotvinnik.com/blog/2012/11/15/2012-11-15-how-to-set-helvetica-as-the-default-sans-serif-font-in/查看这篇博文: http : //blog.olgabotvinnik.com/blog/2012/11/15/2012-11-15-how-to-set-helvetica-as-the-default-sans-serif-font-在/

Adding this to my matplotlibrc file worked for me.将此添加到我的 matplotlibrc 文件中对我有用。

mathtext.fontset : custom
mathtext.it : Helvetica:italic

Also, I needed to have Helvetica-Oblique.ttf in my /usr/local/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf directory.另外,我需要在我的/usr/local/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf目录中有 Helvetica-Oblique.ttf。 Olga Botvinnik has some good instructions in her answer here and in her blog. Olga Botvinnik 在她的回答和她的博客中有一些很好的说明。

Note, that you're going to have to clear out your cache under ~/.matplotlib in order to refresh this.请注意,您必须清除~/.matplotlib下的缓存才能刷新它。

Matplotlib says that custom fontsets are not supported and this might all break in a future update of Matplotlib. Matplotlib 表示不支持自定义字体集,这可能会在 Matplotlib 的未来更新中中断。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM