Title: Unable to save as pdf while using Tex · Issue #21354 · matplotlib/matplotlib · GitHub
Open Graph Title: Unable to save as pdf while using Tex · Issue #21354 · matplotlib/matplotlib
X Title: Unable to save as pdf while using Tex · Issue #21354 · matplotlib/matplotlib
Description: Bug summary I am unable to save figures as pdf while using Tex. The figures are generated, but just not saved into a pdf file. I don't face the problem while saving files as either jpg's or png's. Everything seems to work fine if I disab...
Open Graph Description: Bug summary I am unable to save figures as pdf while using Tex. The figures are generated, but just not saved into a pdf file. I don't face the problem while saving files as either jpg's or png's. ...
X Description: Bug summary I am unable to save figures as pdf while using Tex. The figures are generated, but just not saved into a pdf file. I don't face the problem while saving files as either jpg's or...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/21354
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Unable to save as pdf while using Tex","articleBody":"### Bug summary\r\n\r\nI am unable to save figures as pdf while using Tex. The figures are generated, but just not saved into a pdf file. I don't face the problem while saving files as either jpg's or png's. Everything seems to work fine if I disable Tex.\r\n\r\n### Code for reproduction\r\n\r\n```python\r\nimport matplotlib.pyplot as plt\r\nimport matplotlib.font_manager as fm\r\nfrom cycler import cycler\r\nfrom matplotlib import rc\r\n\r\nplt.rcParams['font.size'] = 11\r\nplt.rcParams['figure.autolayout'] = True\r\nplt.rcParams['savefig.dpi'] = 300\r\nplt.rcParams['xtick.labelsize'] = 'medium'\r\nplt.rcParams['ytick.labelsize'] = 'medium'\r\nplt.rcParams['xtick.major.size'] = 8\r\nplt.rcParams['ytick.major.size'] = 8\r\nplt.rcParams['xtick.minor.size'] = 3\r\nplt.rcParams['ytick.minor.size'] = 3\r\nplt.rcParams['xtick.major.width'] = 1\r\nplt.rcParams['ytick.major.width'] = 1\r\nplt.rcParams['xtick.minor.width'] = 1\r\nplt.rcParams['ytick.minor.width'] = 1\r\nplt.rcParams['xtick.top'] = True\r\nplt.rcParams['ytick.right'] = True\r\nplt.rcParams['xtick.minor.visible'] = True\r\nplt.rcParams['ytick.minor.visible'] = True\r\nplt.rcParams['xtick.direction'] = 'in'\r\nplt.rcParams['ytick.direction'] = 'in'\r\nplt.rcParams['lines.markersize'] = 4\r\nplt.rcParams['lines.linewidth'] = 1\r\nplt.rcParams['lines.markeredgewidth'] = 0.2\r\nplt.rcParams['path.simplify'] = True\r\nplt.rcParams['text.usetex'] = True\r\nrc('text.latex', preamble=r'\\usepackage[T1]{fontenc}\\usepackage{cmbright}')\r\nplt.rcParams['axes.linewidth'] = 0.7\r\nplt.rcParams['axes.labelsize'] = 'large'\r\nplt.rcParams['axes.prop_cycle'] = cycler(color=['k', 'r', 'g', 'b', 'c', 'm', 'y'])\r\nplt.rcParams['legend.numpoints'] = 1\r\nplt.rcParams['legend.frameon'] = False\r\nplt.rcParams['legend.handletextpad'] = 0.3\r\nplt.rcParams['legend.scatterpoints'] = 1\r\nplt.rcParams['legend.handlelength'] = 2\r\nplt.rcParams['legend.handleheight'] = 0.1\r\n\r\nplt.plot([10,100], [10,100])\r\nplt.savefig('test.pdf')\r\n```\r\n\r\n\r\n### Actual outcome\r\n\r\n```\r\n---------------------------------------------------------------------------\r\nFileNotFoundError Traceback (most recent call last)\r\n\u003cipython-input-6-368972b0f1c2\u003e in \u003cmodule\u003e\r\n 1 plt.plot([10,100], [10,100])\r\n----\u003e 2 plt.savefig('test.pdf')\r\n\r\n~/.local/lib/python3.7/site-packages/matplotlib/pyplot.py in savefig(*args, **kwargs)\r\n 964 def savefig(*args, **kwargs):\r\n 965 fig = gcf()\r\n--\u003e 966 res = fig.savefig(*args, **kwargs)\r\n 967 fig.canvas.draw_idle() # need this if 'transparent=True' to reset colors\r\n 968 return res\r\n\r\n~/.local/lib/python3.7/site-packages/matplotlib/figure.py in savefig(self, fname, transparent, **kwargs)\r\n 3013 patch.set_edgecolor('none')\r\n 3014 \r\n-\u003e 3015 self.canvas.print_figure(fname, **kwargs)\r\n 3016 \r\n 3017 if transparent:\r\n\r\n~/.local/lib/python3.7/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)\r\n 2259 orientation=orientation,\r\n 2260 bbox_inches_restore=_bbox_inches_restore,\r\n-\u003e 2261 **kwargs)\r\n 2262 finally:\r\n 2263 if bbox_inches and restore_bbox:\r\n\r\n~/.local/lib/python3.7/site-packages/matplotlib/backend_bases.py in wrapper(*args, **kwargs)\r\n 1667 kwargs.pop(arg)\r\n 1668 \r\n-\u003e 1669 return func(*args, **kwargs)\r\n 1670 \r\n 1671 return wrapper\r\n\r\n~/.local/lib/python3.7/site-packages/matplotlib/_api/deprecation.py in wrapper(*inner_args, **inner_kwargs)\r\n 429 else deprecation_addendum,\r\n 430 **kwargs)\r\n--\u003e 431 return func(*inner_args, **inner_kwargs)\r\n 432 \r\n 433 return wrapper\r\n\r\n~/.local/lib/python3.7/site-packages/matplotlib/backends/backend_pdf.py in print_pdf(self, filename, dpi, bbox_inches_restore, metadata)\r\n 2723 RendererPdf(file, dpi, height, width),\r\n 2724 bbox_inches_restore=bbox_inches_restore)\r\n-\u003e 2725 self.figure.draw(renderer)\r\n 2726 renderer.finalize()\r\n 2727 if not isinstance(filename, PdfPages):\r\n\r\n~/.local/lib/python3.7/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer, *args, **kwargs)\r\n 72 @wraps(draw)\r\n 73 def draw_wrapper(artist, renderer, *args, **kwargs):\r\n---\u003e 74 result = draw(artist, renderer, *args, **kwargs)\r\n 75 if renderer._rasterizing:\r\n 76 renderer.stop_rasterizing()\r\n\r\n~/.local/lib/python3.7/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer, *args, **kwargs)\r\n 49 renderer.start_filter()\r\n 50 \r\n---\u003e 51 return draw(artist, renderer, *args, **kwargs)\r\n 52 finally:\r\n 53 if artist.get_agg_filter() is not None:\r\n\r\n~/.local/lib/python3.7/site-packages/matplotlib/figure.py in draw(self, renderer)\r\n 2789 self.patch.draw(renderer)\r\n 2790 mimage._draw_list_compositing_images(\r\n-\u003e 2791 renderer, self, artists, self.suppressComposite)\r\n 2792 \r\n 2793 for sfig in self.subfigs:\r\n\r\n~/.local/lib/python3.7/site-packages/matplotlib/image.py in _draw_list_compositing_images(renderer, parent, artists, suppress_composite)\r\n 130 if not_composite or not has_images:\r\n 131 for a in artists:\r\n--\u003e 132 a.draw(renderer)\r\n 133 else:\r\n 134 # Composite any adjacent images together\r\n\r\n~/.local/lib/python3.7/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer, *args, **kwargs)\r\n 49 renderer.start_filter()\r\n 50 \r\n---\u003e 51 return draw(artist, renderer, *args, **kwargs)\r\n 52 finally:\r\n 53 if artist.get_agg_filter() is not None:\r\n\r\n~/.local/lib/python3.7/site-packages/matplotlib/_api/deprecation.py in wrapper(*inner_args, **inner_kwargs)\r\n 429 else deprecation_addendum,\r\n 430 **kwargs)\r\n--\u003e 431 return func(*inner_args, **inner_kwargs)\r\n 432 \r\n 433 return wrapper\r\n\r\n~/.local/lib/python3.7/site-packages/matplotlib/axes/_base.py in draw(self, renderer, inframe)\r\n 2919 renderer.stop_rasterizing()\r\n 2920 \r\n-\u003e 2921 mimage._draw_list_compositing_images(renderer, self, artists)\r\n 2922 \r\n 2923 renderer.close_group('axes')\r\n\r\n~/.local/lib/python3.7/site-packages/matplotlib/image.py in _draw_list_compositing_images(renderer, parent, artists, suppress_composite)\r\n 130 if not_composite or not has_images:\r\n 131 for a in artists:\r\n--\u003e 132 a.draw(renderer)\r\n 133 else:\r\n 134 # Composite any adjacent images together\r\n\r\n~/.local/lib/python3.7/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer, *args, **kwargs)\r\n 49 renderer.start_filter()\r\n 50 \r\n---\u003e 51 return draw(artist, renderer, *args, **kwargs)\r\n 52 finally:\r\n 53 if artist.get_agg_filter() is not None:\r\n\r\n~/.local/lib/python3.7/site-packages/matplotlib/axis.py in draw(self, renderer, *args, **kwargs)\r\n 1144 \r\n 1145 for tick in ticks_to_draw:\r\n-\u003e 1146 tick.draw(renderer)\r\n 1147 \r\n 1148 # scale up the axis label box to also find the neighbors, not\r\n\r\n~/.local/lib/python3.7/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer, *args, **kwargs)\r\n 49 renderer.start_filter()\r\n 50 \r\n---\u003e 51 return draw(artist, renderer, *args, **kwargs)\r\n 52 finally:\r\n 53 if artist.get_agg_filter() is not None:\r\n\r\n~/.local/lib/python3.7/site-packages/matplotlib/axis.py in draw(self, renderer)\r\n 300 for artist in [self.gridline, self.tick1line, self.tick2line,\r\n 301 self.label1, self.label2]:\r\n--\u003e 302 artist.draw(renderer)\r\n 303 renderer.close_group(self.__name__)\r\n 304 self.stale = False\r\n\r\n~/.local/lib/python3.7/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer, *args, **kwargs)\r\n 49 renderer.start_filter()\r\n 50 \r\n---\u003e 51 return draw(artist, renderer, *args, **kwargs)\r\n 52 finally:\r\n 53 if artist.get_agg_filter() is not None:\r\n\r\n~/.local/lib/python3.7/site-packages/matplotlib/text.py in draw(self, renderer)\r\n 723 textrenderer.draw_tex(gc, x, y, clean_line,\r\n 724 textobj._fontproperties, angle,\r\n--\u003e 725 mtext=mtext)\r\n 726 else:\r\n 727 textrenderer.draw_text(gc, x, y, clean_line,\r\n\r\n~/.local/lib/python3.7/site-packages/matplotlib/_api/deprecation.py in wrapper(*inner_args, **inner_kwargs)\r\n 429 else deprecation_addendum,\r\n 430 **kwargs)\r\n--\u003e 431 return func(*inner_args, **inner_kwargs)\r\n 432 \r\n 433 return wrapper\r\n\r\n~/.local/lib/python3.7/site-packages/matplotlib/backends/backend_pdf.py in draw_tex(self, gc, x, y, s, prop, angle, ismath, mtext)\r\n 2190 for x1, y1, dvifont, glyph, width in page.text:\r\n 2191 if dvifont != oldfont:\r\n-\u003e 2192 pdfname = self.file.dviFontName(dvifont)\r\n 2193 seq += [['font', pdfname, dvifont.size]]\r\n 2194 oldfont = dvifont\r\n\r\n~/.local/lib/python3.7/site-packages/matplotlib/backends/backend_pdf.py in dviFontName(self, dvifont)\r\n 862 return dvi_info.pdfname\r\n 863 \r\n--\u003e 864 tex_font_map = dviread.PsfontsMap(dviread.find_tex_file('pdftex.map'))\r\n 865 psfont = tex_font_map[dvifont.texname]\r\n 866 if psfont.filename is None:\r\n\r\n~/.local/lib/python3.7/site-packages/matplotlib/dviread.py in __new__(cls, filename)\r\n 849 self._font = {}\r\n 850 self._filename = os.fsdecode(filename)\r\n--\u003e 851 with open(filename, 'rb') as file:\r\n 852 self._parse(file)\r\n 853 return self\r\n\r\nFileNotFoundError: [Errno 2] No such file or directory: ''\r\n```\r\n\r\n\r\n### Expected outcome\r\n\r\nCode is expected to produce a pdf file.\r\n\r\n### Operating system\r\n\r\nSUSE Linux Enterprise Server 12 SP5\r\n\r\n### Matplotlib Version\r\n\r\n3.4.3\r\n\r\n### Matplotlib Backend\r\n\r\nmodule://ipykernel.pylab.backend_inline\r\n\r\n### Python version\r\n\r\nPython 3.7.4\r\n\r\n### Jupyter version\r\n\r\n6.0.1\r\n\r\n### Other libraries\r\n\r\n_No response_\r\n\r\n### Installation\r\n\r\npip\r\n\r\n### Conda channel\r\n\r\n_No response_","author":{"url":"https://github.com/oorc06","@type":"Person","name":"oorc06"},"datePublished":"2021-10-14T09:40:53.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2},"url":"https://github.com/21354/matplotlib/issues/21354"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:7003074e-ca09-7e34-a0d5-02c15b61bde5 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | D274:2F9C11:14A7FBC:1BEF02A:6A545F06 |
| html-safe-nonce | d17b39b06baf0defc7ffd93c7fddba2387c9fbd510b94d343af34198332dbd27 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEMjc0OjJGOUMxMToxNEE3RkJDOjFCRUYwMkE6NkE1NDVGMDYiLCJ2aXNpdG9yX2lkIjoiNzM0NjYzMDg3OTczMTgwMTg2MiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | d34fa20e8c5b543265bbe1b3826f585c45a86b846ba7b44ceed108950929118d |
| hovercard-subject-tag | issue:1026184973 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/matplotlib/matplotlib/21354/issue_layout |
| twitter:image | https://opengraph.githubassets.com/bb11dde9848276c9cecd6ea2f8e5ada2748c9e093ce2ed3915d0b3b7cd999c2d/matplotlib/matplotlib/issues/21354 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/bb11dde9848276c9cecd6ea2f8e5ada2748c9e093ce2ed3915d0b3b7cd999c2d/matplotlib/matplotlib/issues/21354 |
| og:image:alt | Bug summary I am unable to save figures as pdf while using Tex. The figures are generated, but just not saved into a pdf file. I don't face the problem while saving files as either jpg's or png's. ... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | oorc06 |
| hostname | github.com |
| expected-hostname | github.com |
| None | b9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb |
| turbo-cache-control | no-preview |
| go-import | github.com/matplotlib/matplotlib git https://github.com/matplotlib/matplotlib.git |
| octolytics-dimension-user_id | 215947 |
| octolytics-dimension-user_login | matplotlib |
| octolytics-dimension-repository_id | 1385122 |
| octolytics-dimension-repository_nwo | matplotlib/matplotlib |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1385122 |
| octolytics-dimension-repository_network_root_nwo | matplotlib/matplotlib |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 6d28624802c2f7d9500239dd6870ed7031b7353b |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width