Erro de localização da fonte do Matplotlib font_manager.py

4

Em uma máquina Ubuntu 12.04, sempre que eu placo algo recebo um erro como:

/usr/lib/pymodules/python2.7/matplotlib/font_manager.py:1228: UserWarning: findfont: Could not match :family=Bitstream Vera Sans:style=normal:variant=normal:weight=medium:stretch=normal:size=x-large. Returning /usr/share/matplotlib/mpl-data/fonts/ttf/cmb10.ttf

que não consigo encontrar uma solução para on-line. O código a seguir reproduz o erro

import pylab as plt
plt.plot(np.random.random((128)))
plt.title("This should be monospaced")
plt.savefig("/tmp/testfig.pdf")

e também o autoteste matplotlib apresenta este erro:

python -c "import matplotlib as m ; m.test(verbosity=1)"

Em ~/.matplotlib/matplotlibrc eu tenho:

font.family         : monospace
font.style          : normal
font.variant        : normal
font.weight         : medium
font.stretch        : normal
font.size           : 10.0
font.serif          : Palatino, Bitstream Vera Serif, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Charter, serif
font.sans-serif     : Helvetica, Bitstream Vera Sans, sans-serif
font.monospace      : Monaco, Ubuntu Mono Regular, Bitstream Vera Sans Mono, Andale Mono, Nimbus Mono L, Fixed, Terminal, monospace

Algumas coisas que não resolvem o problema para mim:

  1. Excluir arquivos em ~/.matplotlib/ (por exemplo, matplotlibrc , fontList.cache , tex.cache/ )
  2. Altere a propriedade font.family em ~/.matplotlib/matplotlibrc
  3. Reinstale o matplotlib após um apt-get purge

As versões que eu uso são:

  • matplotlib 1.1.1 ~ rc1 + git20120423-0ubuntu1
  • Python 2.7.3
  • IPython 0.12.1
  • Ubuntu 12.04
por Tim 17.09.2012 / 12:58

4 respostas

4

Depois de alguns mexer com os pacotes de fontes, a solução para mim foi instalar os seguintes pacotes:

libsys-cpu-perl pcf2bdf tex-gyre ttf-bitstream-vera tv-fonts xfonts-traditional

Não sei por que isso ajuda, então talvez alguém possa adicionar algumas informações sobre por que isso ajuda. Espero que isso ajude alguém.

    
por 17.09.2012 / 12:58
2

matplotlib sempre usa seu próprio conjunto de fontes, independentemente de outras fontes instaladas no sistema. No Ubuntu 12.04 LTS, essas fontes estão localizadas em /usr/share/matplotlib/mpl-data/fonts/ .

Ao chamar uma fonte em seu código que não está disponível neste diretório, matplotlib tentará primeiro retornar ao Bitstream Vera Sans. No entanto, nem essa fonte está disponível em .../mpl-data/fonts/ nas instalações do Ubuntu 12.04 LTS. Finalmente, matplotlib volta para a fonte cmb10.ttf , que está disponível.

A instalação dos pacotes de fontes do sistema, conforme sugerido acima, não corrigirá esse aviso.

Pode-se, no entanto, adicionar rcParams['mathtext.fontset'] = 'cm' ao código para evitar os múltiplos fallbacks e avisos.

Como alternativa, especifique uma fonte que esteja presente em /usr/share/matplotlib/mpl-data/fonts/ .

    
por 27.03.2014 / 21:08
2

Para mim no OSX, minha instalação do Python estava em meu diretório inicial devido a restrições administrativas que causaram confusão na localização da fonte. Consegui fazer com que a Helvetica funcionasse seguindo estas etapas: link

  1. Baixe e instale o Fondu para converter o Mac-Helvetica em ttf-Helvetica. Com homebrew, isso pode ser feito com: brew install fondu .

  2. Encontre o Helvetica no seu sistema. Para mim, foi /System/Library/Fonts/Helvetica.dfont

  3. Encontre onde o matplotlib armazena seus dados. Use python import matplotlib; matplotlib.matplotlib_fname() para imprimir o diretório.

  4. Coloque o arquivo .ttf em: your_matplotlib_dir/matplotlib/mpl-data/fonts/ttf then sudo fondu -show /System/Library/Fonts/Helvetica.dfont

  5. Edite seu arquivo .matplotlibrc. Copie o arquivo .matplotlibrc original em um diretório pessoal para que ele não seja gravado ao atualizar o matplotlib. $ cp your_matplotlib_dir/matplotlib/mpl-data/matplotlibrc ~/.matplotlib/matplotlibrc

  6. Encontre a linha: #font.sans-serif : Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif , descomente e mova a Helvetica para a frente. font.sans-serif : Helvetica, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

por 21.01.2016 / 21:18
0

Provavelmente, não está carregando o arquivo matplotlibrc config. Certifique-se de que está no lugar certo. A documentação lista vários locais pesquisados. Tente colocá-lo em um dos locais descritos:

  • o diretório de trabalho atual do processo python
  • em ~/.config/matplotlib/matplotlibrc

O último, na verdade, não funcionou para mim com o debian 7, mas também o ~/.matplotlib/matplotlibrc .

    
por 31.08.2014 / 14:54