首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绘制Matplotlib绘图时出错(缺少字体度量文件: cmss17)

绘制Matplotlib绘图时出错(缺少字体度量文件: cmss17)
EN

Stack Overflow用户
提问于 2022-03-15 12:54:04
回答 2查看 649关注 0票数 0

我知道有几个类似的问题与此有关,但我完全不知道该怎么做。在这方面,我绝对是个新手,所以如果可能的话,一步一步的指导会非常有帮助。因此,我一直试图在木星笔记本上编写一个简单的代码:

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rc
rc('text', usetex=True)
plt.rcParams.update({'font.size': 22})

zeta = np.arange(10**-6,10**4,1000)
N0 = 50
ns = 1-(3*(1+16*zeta*N0/3))/(N0*(1+8*zeta*N0))

plt.plot(zeta,ns)
plt.show()

这是我的密码。我得到了以下错误:

代码语言:javascript
复制
FileNotFoundError                         Traceback (most recent call last)
~\anaconda3\lib\site-packages\IPython\core\formatters.py in __call__(self, obj)
    339                 pass
    340             else:
--> 341                 return printer(obj)
    342             # Finally look for special method names
    343             method = get_real_method(obj, self.print_method)

~\anaconda3\lib\site-packages\IPython\core\pylabtools.py in print_figure(fig, fmt, bbox_inches, base64, **kwargs)
    149         FigureCanvasBase(fig)
    150 
--> 151     fig.canvas.print_figure(bytes_io, **kw)
    152     data = bytes_io.getvalue()
    153     if fmt == 'svg':

~\anaconda3\lib\site-packages\matplotlib\backend_bases.py in print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format, bbox_inches, pad_inches, bbox_extra_artists, backend, **kwargs)
   2228                        else suppress())
   2229                 with ctx:
-> 2230                     self.figure.draw(renderer)
   2231 
   2232             if bbox_inches:

~\anaconda3\lib\site-packages\matplotlib\artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
     72     @wraps(draw)
     73     def draw_wrapper(artist, renderer, *args, **kwargs):
---> 74         result = draw(artist, renderer, *args, **kwargs)
     75         if renderer._rasterizing:
     76             renderer.stop_rasterizing()

~\anaconda3\lib\site-packages\matplotlib\artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
     49                 renderer.start_filter()
     50 
---> 51             return draw(artist, renderer, *args, **kwargs)
     52         finally:
     53             if artist.get_agg_filter() is not None:

~\anaconda3\lib\site-packages\matplotlib\figure.py in draw(self, renderer)
   2788 
   2789             self.patch.draw(renderer)
-> 2790             mimage._draw_list_compositing_images(
   2791                 renderer, self, artists, self.suppressComposite)
   2792 

~\anaconda3\lib\site-packages\matplotlib\image.py in _draw_list_compositing_images(renderer, parent, artists, suppress_composite)
    130     if not_composite or not has_images:
    131         for a in artists:
--> 132             a.draw(renderer)
    133     else:
    134         # Composite any adjacent images together

~\anaconda3\lib\site-packages\matplotlib\artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
     49                 renderer.start_filter()
     50 
---> 51             return draw(artist, renderer, *args, **kwargs)
     52         finally:
     53             if artist.get_agg_filter() is not None:

~\anaconda3\lib\site-packages\matplotlib\_api\deprecation.py in wrapper(*inner_args, **inner_kwargs)
    429                          else deprecation_addendum,
    430                 **kwargs)
--> 431         return func(*inner_args, **inner_kwargs)
    432 
    433     return wrapper

~\anaconda3\lib\site-packages\matplotlib\axes\_base.py in draw(self, renderer, inframe)
   2919             renderer.stop_rasterizing()
   2920 
-> 2921         mimage._draw_list_compositing_images(renderer, self, artists)
   2922 
   2923         renderer.close_group('axes')

~\anaconda3\lib\site-packages\matplotlib\image.py in _draw_list_compositing_images(renderer, parent, artists, suppress_composite)
    130     if not_composite or not has_images:
    131         for a in artists:
--> 132             a.draw(renderer)
    133     else:
    134         # Composite any adjacent images together

~\anaconda3\lib\site-packages\matplotlib\artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
     49                 renderer.start_filter()
     50 
---> 51             return draw(artist, renderer, *args, **kwargs)
     52         finally:
     53             if artist.get_agg_filter() is not None:

~\anaconda3\lib\site-packages\matplotlib\axis.py in draw(self, renderer, *args, **kwargs)
   1140 
   1141         ticks_to_draw = self._update_ticks()
-> 1142         ticklabelBoxes, ticklabelBoxes2 = self._get_tick_bboxes(ticks_to_draw,
   1143                                                                 renderer)
   1144 

~\anaconda3\lib\site-packages\matplotlib\axis.py in _get_tick_bboxes(self, ticks, renderer)
   1066     def _get_tick_bboxes(self, ticks, renderer):
   1067         """Return lists of bboxes for ticks' label1's and label2's."""
-> 1068         return ([tick.label1.get_window_extent(renderer)
   1069                  for tick in ticks if tick.label1.get_visible()],
   1070                 [tick.label2.get_window_extent(renderer)

~\anaconda3\lib\site-packages\matplotlib\axis.py in <listcomp>(.0)
   1066     def _get_tick_bboxes(self, ticks, renderer):
   1067         """Return lists of bboxes for ticks' label1's and label2's."""
-> 1068         return ([tick.label1.get_window_extent(renderer)
   1069                  for tick in ticks if tick.label1.get_visible()],
   1070                 [tick.label2.get_window_extent(renderer)

~\anaconda3\lib\site-packages\matplotlib\text.py in get_window_extent(self, renderer, dpi)
    901 
    902         with cbook._setattr_cm(self.figure, dpi=dpi):
--> 903             bbox, info, descent = self._get_layout(self._renderer)
    904             x, y = self.get_unitless_position()
    905             x, y = self.get_transform().transform((x, y))

~\anaconda3\lib\site-packages\matplotlib\text.py in _get_layout(self, renderer)
    304 
    305         # Full vertical extent of font, including ascenders and descenders:
--> 306         _, lp_h, lp_d = renderer.get_text_width_height_descent(
    307             "lp", self._fontproperties,
    308             ismath="TeX" if self.get_usetex() else False)

~\anaconda3\lib\site-packages\matplotlib\backends\backend_agg.py in get_text_width_height_descent(self, s, prop, ismath)
    227             texmanager = self.get_texmanager()
    228             fontsize = prop.get_size_in_points()
--> 229             w, h, d = texmanager.get_text_width_height_descent(
    230                 s, fontsize, renderer=self)
    231             return w, h, d

~\anaconda3\lib\site-packages\matplotlib\texmanager.py in get_text_width_height_descent(self, tex, fontsize, renderer)
    399             dvifile = self.make_dvi(tex, fontsize)
    400             with dviread.Dvi(dvifile, 72 * dpi_fraction) as dvi:
--> 401                 page, = dvi
    402             # A total height (including the descent) needs to be returned.
    403             return page.width, page.height + page.descent, page.descent

~\anaconda3\lib\site-packages\matplotlib\dviread.py in __iter__(self)
    249             integers.
    250         """
--> 251         while self._read():
    252             yield self._output()
    253 

~\anaconda3\lib\site-packages\matplotlib\dviread.py in _read(self)
    329         while True:
    330             byte = self.file.read(1)[0]
--> 331             self._dtable[byte](self, byte)
    332             downs += self._dtable[byte].__name__ == "_down"
    333             if (self._baseline_v is None

~\anaconda3\lib\site-packages\matplotlib\dviread.py in wrapper(self, byte)
    172             if state is not None and self.state != state:
    173                 raise ValueError("state precondition failed")
--> 174             return method(self, *[f(self, byte-min) for f in get_args])
    175         if max is None:
    176             table[min] = wrapper

~\anaconda3\lib\site-packages\matplotlib\dviread.py in _fnt_def(self, k, c, s, d, a, l)
    474     @_dispatch(min=243, max=246, args=('olen1', 'u4', 'u4', 'u4', 'u1', 'u1'))
    475     def _fnt_def(self, k, c, s, d, a, l):
--> 476         self._fnt_def_real(k, c, s, d, a, l)
    477 
    478     def _fnt_def_real(self, k, c, s, d, a, l):

~\anaconda3\lib\site-packages\matplotlib\dviread.py in _fnt_def_real(self, k, c, s, d, a, l)
    481         tfm = _tfmfile(fontname)
    482         if tfm is None:
--> 483             raise FileNotFoundError("missing font metrics file: %s" % fontname)
    484         if c != 0 and tfm.checksum != 0 and c != tfm.checksum:
    485             raise ValueError('tfm checksum mismatch: %s' % n)

FileNotFoundError: missing font metrics file: cmss17

我不知道我是否应该把整个错误放在这里,但这是我得到的,当我试图绘制的图形。我唯一能想到的是,一个用来在图上写东西的文件丢失了,但我不知道如何解决这个问题。任何帮助都将不胜感激。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2022-06-12 02:36:52

我只是遇到了同样的错误,在我的例子中,我需要使用乳胶。我发现,如果正确安装了其他字体,更改默认字体可以解决以下问题:

代码语言:javascript
复制
plt.rcParams.update({
"text.usetex": True,
"font.family": "sans-serif",
"font.sans-serif": ["Helvetica"]})

您可以在代码的第6行插入此脚本,并查看它是否有用。

票数 1
EN

Stack Overflow用户

发布于 2022-03-15 20:16:32

我并不是从你贴出的字体大小22上看出来的,所以这是为轴号的标签所做的。

您发布的更简单的版本:

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt

zeta = np.arange(10**-6,10**4,1000)
N0 = 50
ns = 1-(3*(1+16*zeta*N0/3))/(N0*(1+8*zeta*N0))
plt.plot(zeta,ns)
plt.tick_params(labelsize=22)
plt.show()

您可以在我的评论中转到这里,在会话启动后打开一个笔记本,并在那里测试代码。你应该看看它应该能用。如果它的工作方式与你尝试的方式不一样,你就会发现一些过时的东西。

在第一个代码块中的Matplotlib的蜱形器文档顶部说明了滴答格式的基本原理。在大多数情况下,您应该不再需要rcrcParams了。现在的语法更加明显了。任何使用的答案都是过时的,因为他们没有使用提供的路线,或者他们正在覆盖不寻常的/边缘的情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71482621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档