Я пытаюсь сохранить несколько 2D гистограмм, сгенерированных с использованием hist2d , в многостраничный pdf, сгенерированный с использованием PdfPages , используя следующий код:
import numpy as np
import pandas as pd
import seaborn as sns
import scipy.stats as stats
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages
import warnings
import subprocess
import os
warnings.simplefilter("ignore", category=PendingDeprecationWarning)
x1 = np.random.randn(100000)
y1 = np.random.randn(100000) + 5
pp = PdfPages("somepdf.pdf")
fig = plt.figure()
plt.hist2d(x=x1,y=y2, bins=50)
plt.title(row['smRNAname'])
plt.xlabel("Position(BP)")
plt.ylabel("Read Length")
cb = plt.colorbar()
cb.set_label('counts in bin')
pp.savefig(fig, dpi=300, transparent = True)
plt.close()
fig = plt.figure()
fig = plt.hist2d(x=x1,y=y1, bins=50)
plt.title(row['PIWIname'])
plt.xlabel("Position(BP)")
plt.ylabel("Read Length")
cb = plt.colorbar()
cb.set_label('counts in bin')
pp.savefig(fig, dpi=300, transparent = True)
plt.close()
pp.close()
, но я 'я получаю следующую ошибку:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-87-ccbb61958687> in <module>()
61 cb = plt.colorbar()
62 cb.set_label('counts in bin')
---> 63 pp.savefig(fig, dpi=300, transparent = True)
64 plt.close()
65
/anaconda3/lib/python3.7/site-packages/matplotlib/backends/backend_pdf.py in savefig(self, figure, **kwargs)
2519 manager = Gcf.get_active()
2520 else:
-> 2521 manager = Gcf.get_fig_manager(figure)
2522 if manager is None:
2523 raise ValueError("No figure {}".format(figure))
/anaconda3/lib/python3.7/site-packages/matplotlib/_pylab_helpers.py in get_fig_manager(cls, num)
39 figure and return the manager; otherwise return *None*.
40 """
---> 41 manager = cls.figs.get(num, None)
42 if manager is not None:
43 cls.set_active(manager)
TypeError: unhashable type: 'numpy.ndarray'
Глядя на саму ошибку, я могу понять, что это может быть связано с тем, что hist2d возвращает двумерный массив вместо ссылки на фигуру (?).Сохранение гистограммы напрямую с помощью plt.savefig ("test.pdf") работает просто отлично.Я не уверен, что я делаю неправильно или это просто невозможно?