2

目前,我正在努力解决将 matplotlib 图形导出到 PGF 时出现的一个奇怪问题。如屏幕截图所示(来自我的 LaTeX 文档),输出有一个损坏的图例框,见图。1,太小了。但是,当我查看 PDF 输出(未描绘)时,图例框具有正确的大宽度,因此图例文本非常适合。

带有损坏的图例框的 PGF 输出(来自 LaTex 文档的屏幕截图)

这是我的 LaTeX python 文档中的代码片段。(# ...代表对问题不重要的行。)


    import matplotlib.pyplot as plt
    import numpy as np
    import seaborn as podo
    from matplotlib import rc
    import csv, sys, glob, re
    rc('text', usetex=True)
    
    # ...
    
    plt.rc('font', family='serif')
    box_linewidth = 0.416667
    plt_linewidth = 0.625
    plt.rcParams['axes.linewidth'] = box_linewidth
    plt.rcParams['axes.labelcolor'] = "k"
    plt.rcParams['axes.edgecolor'] = "k"
    plt.rcParams['lines.linewidth'] = plt_linewidth
    plt.rcParams['patch.linewidth'] = box_linewidth
    plt.rcParams['xtick.minor.width'] = box_linewidth
    plt.rcParams['xtick.major.width'] = box_linewidth
    plt.rcParams['ytick.minor.width'] = box_linewidth
    plt.rcParams['ytick.major.width'] = box_linewidth
    plt.rcParams['hatch.linewidth'] = 0.1
    plt.rcParams['lines.markersize'] = 4
    plt.rcParams['lines.markeredgewidth'] = plt_linewidth
    plt.rcParams['font.size'] = 10
    plt.rcParams['errorbar.capsize'] = 10
    plt.rcParams['grid.color'] = "k"
    plt.rcParams['grid.linewidth'] = box_linewidth
    plt.rcParams['legend.edgecolor'] = "k"
    plt.rcParams['legend.framealpha'] = 1.0
    plt.rcParams['legend.columnspacing'] = 1.5
    plt.rcParams['legend.labelspacing'] = 0.5
    plt.rcParams['legend.handletextpad'] = 0.6
    plt.rcParams['errorbar.capsize'] = 2
    plt.rcParams['axes.xmargin'] = 0.05
    
    # ...
    
    fig = plt.figure(num=i, figsize=(plot_width, plot_height), tight_layout=False, constrained_layout=True, facecolor='w', edgecolor='k')
    
    # ...
    
    plt.subplot(4, 1, 1)
    ax4 = plt.gca()
    ax4.set_xlim(0,60)
    ax4.set_ylim(-10,0)
    ax4.yaxis.label.set_color('white')
    ax4.set_ylabel("z")
    ax4.set_xlabel("$x$ / mm")
    ax4.tick_params(axis='x', colors='white')
    ax4.set_aspect(1)
    p1 = plt.plot(mean_step_intpl(cant_p_x_1000_sim,cant_p_z_1000_sim,cant_m_x_1000_sim,cant_m_z_1000_sim)[0],mean_step_intpl(cant_p_x_1000_sim,cant_p_z_1000_sim,cant_m_x_1000_sim,cant_m_z_1000_sim)[1], linestyle="solid", color="gray", label="simulation",zorder=2)
    p2 = plt.plot(circ_x_1000_sim, circ_z_1000_sim, "-k", label="pressure stamp",zorder=1)
    p3 = plt.scatter(cant_x_1000_meas, cant_z_1000_meas, label="measurement", s=18.8, facecolors='none', edgecolors='k',zorder=3)
    
    plt.legend(loc="lower left")
    
    # ...
    
    plt.savefig(path + "/" +  filename + ".pdf")
    plt.savefig(path + "/" +  filename + ".pgf")

你知道为什么 PGF 输出会以这种错误的方式重新调整图例的大小吗?期待您的建议和亲切的问候,

帕斯卡 B.

4

0 回答 0