【问题标题】:How to set Helvetica font for axes labels (numbers) with matplotlib with usetex on?如何使用带有 usetex 的 matplotlib 为轴标签(数字)设置 Helvetica 字体?
【发布时间】:2015-05-30 18:41:54
【问题描述】:

我将 matplotlibrc 参数文件中的字体样式设置为已安装的 Helvetica(无衬线),并将 text.usetex 设置为“true”,但轴字体使用衬线字体。我的 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

如何获取坐标轴字体以使用 Helvetica sans?

更新

我尝试使用代码:

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

但这是我得到的错误:

/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)

【问题讨论】:

  • 我在 matplotlibrc 文件中注意到的一件事:font.sans-serif : Helvetica, Arial, Bitstream Vera Sans,....... 应该只是一种字体类型,即font.sans-serif : Helvetica
  • 另外,truefalse 不应该大写吗?
  • 如果字体不可用,我相信字体会在剩余字体中循环。
  • 您是否正在使用任何其他可能会覆盖您的默认 matplotlibrc 设置的包(例如 seaborn,或您自己正在导入的一些代码等)?
  • @JoeKington 不,我没有使用任何其他软件包。

标签: python matplotlib fonts


【解决方案1】:

您是否已将.ttf 文件添加到matplotlib 可以找到它们的位置?操作系统的“已安装”可能并不意味着matplotlib 的“已安装”。查看这篇博文:http://blog.olgabotvinnik.com/blog/2012/11/15/2012-11-15-how-to-set-helvetica-as-the-default-sans-serif-font-in/

【讨论】:

    【解决方案2】:

    将此添加到我的 matplotlibrc 文件对我有用。

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

    另外,我的/usr/local/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf 目录中需要有 Helvetica-Oblique.ttf。 Olga Botvinnik 在此处和她的博客中的回答中有一些很好的说明。

    请注意,您必须清除 ~/.matplotlib 下的缓存才能刷新此内容。

    Matplotlib 表示不支持自定义字体集,这可能会在 Matplotlib 的未来更新中全部中断。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-01
      • 2020-09-24
      • 1970-01-01
      • 1970-01-01
      • 2012-09-08
      • 2018-11-04
      • 1970-01-01
      相关资源
      最近更新 更多