Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python matplotlib未保存pdf w/latex_Python_Pdf_Matplotlib_Latex - Fatal编程技术网

Python matplotlib未保存pdf w/latex

Python matplotlib未保存pdf w/latex,python,pdf,matplotlib,latex,Python,Pdf,Matplotlib,Latex,我有一个问题类似于,但没有西里尔字母。我的代码如下: # -*- coding: utf-8 -*- import matplotlib as mpl mpl.rcParams['backend'] = 'pdf' mpl.rc('font',**{'family':'serif'}) mpl.rc('text', usetex=True) mpl.rc('text.latex',unicode=True) import pandas as pd import seaborn as sns i

我有一个问题类似于,但没有西里尔字母。我的代码如下:

# -*- coding: utf-8 -*-
import matplotlib as mpl
mpl.rcParams['backend'] = 'pdf'
mpl.rc('font',**{'family':'serif'})
mpl.rc('text', usetex=True)
mpl.rc('text.latex',unicode=True)

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import FuncFormatter

millionFormatter        = FuncFormatter(lambda x, pos:'\$%1.0fM' % (x*1e-6))
percentFormatter        = FuncFormatter(lambda x, pos:'{:.2%}'.format(x))

errorDF = pd.DataFrame({'% Diff':[ -6.12256893e-13,   1.27849915e-12,   6.29839396e-06,
                              3.38728472e-05,   6.23072435e-06,   5.03582306e-06,
                              -1.09295890e-05,   2.04080118e-04],
                    'Difference': [ -2.43408203e-01,   4.77478027e-01,   2.31911964e+06,
                                   1.26799125e+07,   2.25939726e+06,   1.55594653e+06,
                                   -3.10751878e+06,   5.58644987e+07]}
                   ,index = np.arange(2008,2016))

sns.set_style('ticks')
fig = plt.figure(figsize=(5,2))
ax = fig.add_subplot(111)
ax2 = ax.twinx()
errorDF['% Diff'].plot(kind='bar', position=1, ax=ax, color = 'r', legend=True, label = 'Percent Error',ylim=(0,0.0005), **{'width':0.3})
errorDF.Difference.plot(kind='bar', position=0, ax=ax2,ylim=(0,80000000), legend=True, label = 'Absolute Error [secondary y-axis]', **{'width':0.3})
ax2.legend(loc= 'upper left')
ax.set_xlabel('')
ax2.set_xlabel('')
ax.legend(bbox_to_anchor= (0.286,0.85))
ax.yaxis.set_major_formatter(percentFormatter)
ax2.yaxis.set_major_formatter(millionFormatter)
ax.yaxis.set_ticks([0,0.0001,0.0002,0.0003, 0.0004])
ax2.yaxis.set_ticks([0,20000000,40000000,60000000])
fig.savefig(r'C:\ . . .\dataerrors.pdf', bbox_inches='tight')
当我试图将该图保存为pdf时,我得到以下回溯

Traceback (most recent call last):
 File "<ipython-input-46-ee8c792b07cc>", line 21, in <module>
    fig.savefig(r'C:\Users\Chris\Documents\MIT\Dissertation\FPDS\Visualizations\USASpending\dataerrors.pdf', bbox_inches='tight',dpi=150)
  File "C:\Users\Chris\Anaconda3\envs\py34\lib\site-packages\matplotlib\figure.py", line 1565, in savefig
    self.canvas.print_figure(*args, **kwargs)
  File "C:\Users\Chris\Anaconda3\envs\py34\lib\site-packages\matplotlib\backend_bases.py", line 2180, in print_figure
**kwargs)
  File "C:\Users\Chris\Anaconda3\envs\py34\lib\site-packages\matplotlib\backends\backend_pdf.py", line 2536, in print_pdf
self.figure.draw(renderer)
  File "C:\Users\Chris\Anaconda3\envs\py34\lib\site-packages\matplotlib\artist.py", line 61, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "C:\Users\Chris\Anaconda3\envs\py34\lib\site-packages\matplotlib\figure.py", line 1159, in draw
    func(*args)
  File "C:\Users\Chris\Anaconda3\envs\py34\lib\site-packages\matplotlib\artist.py", line 61, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "C:\Users\Chris\Anaconda3\envs\py34\lib\site-packages\matplotlib\axes\_base.py", line 2324, in draw
    a.draw(renderer)
  File "C:\Users\Chris\Anaconda3\envs\py34\lib\site-packages\matplotlib\artist.py", line 61, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "C:\Users\Chris\Anaconda3\envs\py34\lib\site-packages\matplotlib\axis.py", line 1111, in draw
    tick.draw(renderer)
  File "C:\Users\Chris\Anaconda3\envs\py34\lib\site-packages\matplotlib\artist.py", line 61, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "C:\Users\Chris\Anaconda3\envs\py34\lib\site-packages\matplotlib\axis.py", line 254, in draw
    self.label2.draw(renderer)
  File "C:\Users\Chris\Anaconda3\envs\py34\lib\site-packages\matplotlib\artist.py", line 61, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "C:\Users\Chris\Anaconda3\envs\py34\lib\site-packages\matplotlib\text.py", line 792, in draw
    mtext=mtext)
  File "C:\Users\Chris\Anaconda3\envs\py34\lib\site-packages\matplotlib\backends\backend_pdf.py", line 1866, in draw_tex
    psfont = self.tex_font_mapping(dvifont.texname)
      File "C:\Users\Chris\Anaconda3\envs\py34\lib\site-packages\matplotlib\backends\backend_pdf.py", line 1568, in tex_font_mapping
    return self.tex_font_map[texfont]
  File "C:\Users\Chris\Anaconda3\envs\py34\lib\site-packages\matplotlib\dviread.py", line 701, in __getitem__
result = self._font[texname.decode('ascii')]
AttributeError: 'str' object has no attribute 'decode'
回溯(最近一次呼叫最后一次):
文件“”,第21行,在
图.savefig(r'C:\Users\Chris\Documents\MIT\designment\FPDS\Visualizations\useamping\dataerrors.pdf',bbox\u inches='tight',dpi=150)
文件“C:\Users\Chris\Anaconda3\envs\py34\lib\site packages\matplotlib\figure.py”,第1565行,在savefig中
self.canvas.print_图(*args,**kwargs)
文件“C:\Users\Chris\Anaconda3\envs\py34\lib\site packages\matplotlib\backend\u base.py”,第2180行,如图所示
**kwargs)
文件“C:\Users\Chris\Anaconda3\envs\py34\lib\site packages\matplotlib\backends\backend\u pdf.py”,第2536行,打印格式为pdf
self.figure.draw(渲染器)
文件“C:\Users\Chris\Anaconda3\envs\py34\lib\site packages\matplotlib\artist.py”,第61行,在draw\u包装中
绘制(艺术家、渲染器、*args、**kwargs)
文件“C:\Users\Chris\Anaconda3\envs\py34\lib\site packages\matplotlib\figure.py”,第1159行,在绘图中
func(*args)
文件“C:\Users\Chris\Anaconda3\envs\py34\lib\site packages\matplotlib\artist.py”,第61行,在draw\u包装中
绘制(艺术家、渲染器、*args、**kwargs)
文件“C:\Users\Chris\Anaconda3\envs\py34\lib\site packages\matplotlib\axes\\u base.py”,第2324行,在绘图中
a、 绘制(渲染器)
文件“C:\Users\Chris\Anaconda3\envs\py34\lib\site packages\matplotlib\artist.py”,第61行,在draw\u包装中
绘制(艺术家、渲染器、*args、**kwargs)
文件“C:\Users\Chris\Anaconda3\envs\py34\lib\site packages\matplotlib\axis.py”,第1111行,在绘图中
勾选.draw(渲染器)
文件“C:\Users\Chris\Anaconda3\envs\py34\lib\site packages\matplotlib\artist.py”,第61行,在draw\u包装中
绘制(艺术家、渲染器、*args、**kwargs)
文件“C:\Users\Chris\Anaconda3\envs\py34\lib\site packages\matplotlib\axis.py”,绘图中第254行
self.label2.draw(渲染器)
文件“C:\Users\Chris\Anaconda3\envs\py34\lib\site packages\matplotlib\artist.py”,第61行,在draw\u包装中
绘制(艺术家、渲染器、*args、**kwargs)
文件“C:\Users\Chris\Anaconda3\envs\py34\lib\site packages\matplotlib\text.py”,第792行,在绘图中
多行文字=多行文字)
文件“C:\Users\Chris\Anaconda3\envs\py34\lib\site packages\matplotlib\backends\backend\u pdf.py”,第1866行,绘图文本
psfont=self.tex\u font\u映射(dvifont.texname)
文件“C:\Users\Chris\Anaconda3\envs\py34\lib\site packages\matplotlib\backends\backend\u pdf.py”,第1568行,采用tex\u字体映射
返回self.tex\u font\u映射[texfont]
文件“C:\Users\Chris\Anaconda3\envs\py34\lib\site packages\matplotlib\dviread.py”,第701行,在u getitem中__
结果=self.\u字体[texname.decode('ascii')]
AttributeError:“str”对象没有属性“decode”
该图将在控制台中显示,但上面的错误是在我尝试将其保存为pdf时生成的

Python 3.4 Matplotlib 1.5.1
OS Windows 7

似乎我也遇到了同样的问题,原因是MikTex安装中缺少一些必要的字体。对我来说,解决方案是将其与所有软件包一起重新安装,以确保生成所有字体。我知道这是一个丑陋的解决办法,但它完全解决了我的问题。 我试过你的脚本(只有没有seaborn,我相信它不会影响fontstyles)并生成了pdf


XeTeX还有另一个解决方法,您可以看看。

在我使用MiKTeX的情况下,当我尝试将latex排版图保存为PDF时,我遇到以下错误:

  runfile('C:/Users/yl7316/.spyder-py3/Pricing2/PostageStamp/Plot.py', wdir='C:/Users/yl7316/.spyder-py3/Pricing2/PostageStamp')
Traceback (most recent call last):

  File "<ipython-input-99-08a0bdbc1356>", line 1, in <module>
    runfile('C:/Users/yl7316/.spyder-py3/Pricing2/PostageStamp/Plot.py', wdir='C:/Users/yl7316/.spyder-py3/Pricing2/PostageStamp')

  File "C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 827, in runfile
    execfile(filename, namespace)

  File "C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/yl7316/.spyder-py3/Pricing2/PostageStamp/Plot.py", line 41, in <module>
    fig1.savefig('TIC_Plot.pdf')

  File "C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site-packages\matplotlib\figure.py", line 2180, in savefig
    self.canvas.print_figure(fname, **kwargs)

  File "C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site-packages\matplotlib\backend_bases.py", line 2082, in print_figure
    **kwargs)

  File "C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site-packages\matplotlib\backends\backend_pdf.py", line 2503, in print_pdf
    self.figure.draw(renderer)

  File "C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site-packages\matplotlib\artist.py", line 38, in draw_wrapper
    return draw(artist, renderer, *args, **kwargs)

  File "C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site-packages\matplotlib\figure.py", line 1709, in draw
    renderer, self, artists, self.suppressComposite)

  File "C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site-packages\matplotlib\image.py", line 135, in _draw_list_compositing_images
    a.draw(renderer)

  File "C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site-packages\matplotlib\artist.py", line 38, in draw_wrapper
    return draw(artist, renderer, *args, **kwargs)

  File "C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site-packages\matplotlib\axes\_base.py", line 2647, in draw
    mimage._draw_list_compositing_images(renderer, self, artists)

  File "C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site-packages\matplotlib\image.py", line 135, in _draw_list_compositing_images
    a.draw(renderer)

  File "C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site-packages\matplotlib\artist.py", line 38, in draw_wrapper
    return draw(artist, renderer, *args, **kwargs)

  File "C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site-packages\matplotlib\axis.py", line 1217, in draw
    self.label.draw(renderer)

  File "C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site-packages\matplotlib\artist.py", line 38, in draw_wrapper
    return draw(artist, renderer, *args, **kwargs)

  File "C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site-packages\matplotlib\text.py", line 714, in draw
    mtext=mtext)

  File "C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site-packages\matplotlib\backends\backend_pdf.py", line 1909, in draw_tex
    pdfname = self.file.dviFontName(dvifont)

  File "C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site-packages\matplotlib\backends\backend_pdf.py", line 674, in dviFontName
    psfont = tex_font_map[dvifont.texname]

  File "C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site-packages\matplotlib\dviread.py", line 821, in __getitem__
    result = self._font[texname]

KeyError: b'tcrm1728'
runfile('C:/Users/yl7316/.spyder-py3/Pricing2/PostageStamp/Plot.py',wdir='C:/Users/yl7316/.spyder-py3/Pricing2/PostageStamp')
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
运行文件('C:/Users/yl7316/.spyder-py3/Pricing2/PostageStamp/Plot.py',wdir='C:/Users/yl7316/.spyder-py3/Pricing2/PostageStamp')
文件“C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site packages\spyder\u kernels\customize\spydercurustomize.py”,第827行,在runfile中
execfile(文件名、命名空间)
文件“C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site packages\spyder\u kernels\customize\spydercurustomize.py”,第110行,在execfile中
exec(编译(f.read(),文件名,'exec'),命名空间)
文件“C:/Users/yl7316/.spyder-py3/Pricing2/PostageStamp/Plot.py”,第41行,在
图1.savefig('TIC_Plot.pdf'))
文件“C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site packages\matplotlib\figure.py”,第2180行,保存图
self.canvas.print_图(fname,**kwargs)
文件“C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site packages\matplotlib\backend\u base.py”,第2082行,如图所示
**kwargs)
文件“C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site packages\matplotlib\backends\backend\u pdf.py”,第2503行,打印格式为pdf
self.figure.draw(渲染器)
文件“C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site packages\matplotlib\artist.py”,第38行,在draw\u包装中
返回绘制(艺术家、渲染器、*args、**kwargs)
文件“C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site packages\matplotlib\figure.py”,第1709行,在绘图中
渲染器、自身、艺术家、自身(合成)
文件“C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site packages\matplotlib\image.py”,第135行,在“绘制”列表“合成”图像中
a、 绘制(渲染器)
文件“C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site packages\matplotlib\artist.py”,第38行,在draw\u包装中
返回绘制(艺术家、渲染器、*args、**kwargs)
文件“C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site packages\matplotlib\axes\u base.py”,第2647行,在绘图中
mimage.\u绘制\u列表\u合成\u图像(渲染器、自身、艺术家)
文件“C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site packages\matplotlib\image.py”,第135行,在“绘制”列表“合成”图像中
a、 绘制(渲染器)
文件“C:\Users\yl7316\AppData\Local\Continuum\anaconda3\lib\site packages\matplotlib\artist.py”,第38行,在draw\u包装中
回来