2017-06-19 18 views
1

matplotlibバープロットをPDFに挿入する最適な方法は何ですか?バープロットは最初にHTMLにレンダリングされ、その後PDFに送信されます。 PS:私はパンダ、numpy、matplotlib、jinja2、weasyprintを使用しています。私がこのようにしているのは、私がすでにPDFに追加したPandas DataFramesも持っているからです。matplotlibバープロットをPDFに追加

現在の動作は次のとおりです。

これはhtmlファイルです。

<!DOCTYPE html> 
<html> 
<head lang="en"> 
    <meta charset="UTF-8"> 
    <title>{{ title }}</title> 
</head> 
<body> 
    <h2>Produced services plot:</h2> 
    {{ produced_services_plot }} 
</body> 
</html> 

これは、例えばプロットである:

# Fixing random state for reproducibility 
np.random.seed(19680801) 

plt.rcdefaults() 
fig, ax = plt.subplots() 

# Example data 
people = ('Tom', 'Dick', 'Harry', 'Slim', 'Jim') 
y_pos = np.arange(len(people)) 
performance = 3 + 10 * np.random.rand(len(people)) 
error = np.random.rand(len(people)) 

ax.barh(y_pos, performance, xerr=error, align='center', 
     color='green', ecolor='black') 
ax.set_yticks(y_pos) 
ax.set_yticklabels(people) 
ax.invert_yaxis() # labels read top-to-bottom 
ax.set_xlabel('Performance') 
ax.set_title('How fast do you want to go today?') 

そして、これは私がPDFを作成している方法です。

env = Environment(loader=FileSystemLoader('.')) 
template = env.get_template("pdf_report_template.html") 

template_vars = {"title": "Test", 
       "produced_services_plot": plt.savefig("fig.png") 
       # Some other stuff here that goes to the HTML. 
       } 
html_out = template.render(template_vars) 
HTML(string=html_out).write_pdf("report.pdf", stylesheets=["pdf_report_style.css"])) 

スタイルシートはここで見つけることができます:http://www.blueprintcss.org/blueprint/src/typography.css

おそらくこれらのライブラリも必要です:

from jinja2 import Environment, FileSystemLoader 
from weasyprint import HTML 
import matplotlib.pyplot as plt 

私はplt.savefig()メソッドがそこで呼び出されるべきではないことを知っています。しかし、上記のように画像をHTMLに送る最良の方法は何でしょうか?

答えて

1

は、私はあなたが

<h2>Produced services plot:</h2> 
<img src="{{ produced_services_plot }}"> 

が、その後のpythonに保存した画像

filename = "myfilename.png" 
plt.savefig(filename) 

をHTMLで画像を作成し、テンプレート

template_vars = {"title": "Test", 
       "produced_services_plot": filename 
       } 
+0

画像にファイル名を送信すると思われますPDFには表示されませんでした。警告:ベースURIなしの相対URI参照: at lineなし –

+1

E:これは私のために働いた! –

関連する問題