我知道问题已经被提出,但我试图用不同的解决方案来改变我的代码,这里和那里没有成功。
我想报告多个pdf页面,每页都有多个图表,这里是第一页的一段代码,它不完整,但其余部分用不同的绘图以相同的方式编写。 我首先尝试使用subplot2grid方法,然后使用基本图和子图方法。我可以看到绘制了子图,但似乎最终的pdf只包含了最后一个子图,所以我猜这个问题来自子图节省吗?
protected boolean removeEldestEntry(Map.Entry<K,V> eldest) {
return false;
}
这是我最后一次使用“fig.add_subplot()”方法的尝试,但我得到了奇怪的空白数字
from matplotlib.backends.backend_pdf import PdfPages
with PdfPages('Rapport_criblage.pdf') as pdf_pages:
plt.figure(figsize=(8.27, 11.69), dpi=100)
plt.subplot(421)
moyenne_ratio=[]
moyenne_ratio.append(etu_ratio_ctrlpos[0])
moyenne_ratio.append(etu_ratio_ctrlneg[0])
SD_ratio=[]
SD_ratio.append(etu_ratio_ctrlpos[1])
SD_ratio.append(etu_ratio_ctrlneg[1])
pos = numpy.arange(2)
width = 1.0 # gives histogram aspect to the bar diagram
ax1 = plt.axes()
ax1.set_xticks(pos + (width / 2))
ax1.set_xticklabels("+-")
plt.bar(pos, moyenne_ratio, width, color='b',yerr=SD_ratio)
txt_r=" RATIO \n cellules+tampon: \n moyenne ecart-type CV \n"+ \
str(etu_ratio_ctrlneg)+"\n"+ \
"cellules+OT: \n moyenne ecart-type CV \n"+ \
str(etu_ratio_ctrlpos)+"\n"+ \
"Z: "+str(Zpos_vs_neg_ratio)
ax1.text(0.1,0.1,txt_r,horizontalalignment='left',verticalalignment='center',transform = ax1.transAxes)
plt.subplot(422)
ratio_max_basal=[]
puits=[]
for l in ctrlneg:
ratio_max_basal.append(l[5])
puits.append(l[7])
pos = numpy.arange(len(ratio_max_basal))
width = 1.0 # gives histogram aspect to the bar diagram
ax2 = plt.axes()
ax2.set_xticks(pos + (width / 2))
ax2.set_xticklabels(puits)
plt.bar(pos, ratio_max_basal, width, color='b')
pdf_pages.savefig()
我从matplotlib开始,也许这很明显,但我不明白。提前谢谢。
答案 0 :(得分:2)
以下内容适用于创建2页pdf,第1页有2个子图,第2页有3个子图。也许您需要在第二个示例中写完所有数字后调用pdf_pages.close()
?
from matplotlib.backends.backend_pdf import PdfPages
import matplotlib.pyplot as plt
pp = PdfPages('multipage.pdf')
fig=plt.figure()
ax1=fig.add_subplot(211)
ax2=fig.add_subplot(212)
pp.savefig(fig)
fig2=plt.figure()
ax1=fig2.add_subplot(311)
ax2=fig2.add_subplot(312)
ax3=fig2.add_subplot(313)
pp.savefig(fig2)
pp.close()