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に送る最良の方法は何でしょうか?
画像にファイル名を送信すると思われますPDFには表示されませんでした。警告:ベースURIなしの相対URI参照: at lineなし –
E:これは私のために働いた! –