[英]Missing images inserted by `matplotlib.imshow` in PDF when using `savefig`
我正在嘗試插入圖像來注釋這樣的圖形:
from matplotlib import offsetbox
from matplotlib import pyplot as plt
from matplotlib import rcParams
rcParams["figure.dpi"] = 200
rcParams["figure.figsize"] = 4,3
alphaEndo = pd.read_csv('../data/UNIT_VOL_FRACTION.ENDO_DODECAHEDRON.csv', comment="#")
fig, ax = plt.subplots()
ax.grid(False)
ax.set_ylabel("$\\alpha_c(s)$")
ax.set_xlabel("$s$")
colors = plt.rcParams['axes.prop_cycle'].by_key()['color']
def plot_polyhedron(N, xScale, yScale, ax):
img = plt.imread("../data/UNIT_VOL_ENDO_DODECAHEDRON_IMAGES/UNIT_VOL_ENDO_DODECAHEDRON.%04d.png" % N)
img = offsetbox.OffsetImage(img, zoom=0.07)
img.image.axes = ax
ab = offsetbox.AnnotationBbox(img, xy=(alphaEndo['S'].loc[N], alphaEndo['ALPHA_STAR'].loc[N]),
xybox=(xScale*alphaEndo['S'].loc[N], yScale*alphaEndo['ALPHA_STAR'].loc[N]),
frameon=False, arrowprops=dict(arrowstyle="Simple",facecolor=colors[0]),pad=False)
ax.add_artist(ab)
plot_polyhedron(5, 2, 0.6, ax)
plot_polyhedron(50,0.65, 0.35, ax)
plot_polyhedron(95, 0.7, 3, ax)
ax.plot(alphaEndo['S'], alphaEndo['ALPHA_STAR'], lw=2)
figBaseName = "ENDO_DODECAHEDRON_ALPHA_S"
fig.savefig(figBaseName + ".png")
fig.savefig(figBaseName + ".pdf")
if "GEOP" in os.environ:
pathName = os.path.join(os.environ["GEOP"], "figures", figBaseName)
fig.savefig(pathName + ".png")
fig.savefig(pathName + ".pdf")
對於PNG文件,我得到以下信息:
但在PDF中,缺少多面體的小圖像:
我發現了有關丟失圖像的問題 ,但是對於我的情況,答案並沒有真正幫助,因為我沒有在“ plt.savefig()”之前顯式調用“ plt.show()”,而是使用軸。 該代碼來自Jupyter筆記本單元。
請嘗試以下修改:
def plot_polyhedron(N, xScale, yScale, ax):
img = plt.imread("../data/UNIT_VOL_ENDO_DODECAHEDRON_IMAGES/UNIT_VOL_ENDO_DODECAHEDRON.%04d.png" % N)
imagebox = offsetbox.OffsetImage(img, zoom=0.07)
imagebox.image.axes = ax
ab = offsetbox.AnnotationBbox(imagebox, xy=(alphaEndo['S'].loc[N], alphaEndo['ALPHA_STAR'].loc[N]),
xybox=(xScale*alphaEndo['S'].loc[N], yScale*alphaEndo['ALPHA_STAR'].loc[N]),
frameon=False, arrowprops=dict(arrowstyle="Simple",facecolor=colors[0]),pad=False)
ax.add_artist(ab)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.