2

それらの行を私のmatplotlibコードに入れることができました

ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['left'].set_visible(False)

保存された画像の上、右、左の軸を隠すことを期待して。それらはpng画像ではうまく機能しましたが、保存されたepsファイルでは、左と上にまだ境界があります(軸であるかどうかはわかりません)(右軸は実際に消えました)。

eps 画像として保存するときに軸/フレームの境界を非表示にする方法についてのアイデアはありますか?

ところで:私はしたくない

ax.axis('off')

下軸が機能する必要があるためです。

編集

次の最小限の作業例でいくつかのテストを行ったところ、次のいずれかの場合、eps 出力でも軸が非表示になることがわかりました。または 2) xticks と xticklabels の手動設定をオフにする

ただし、上記の両方の機能は、eps 出力に絶対に保持する必要があるため、解決策はありますか?

import matplotlib.pyplot as plt
import numpy as np
# setting up fig and ax
fig = plt.figure(figsize=(12,6))
ax  = fig.add_axes([0.00,0.10,0.90,0.90])
# translucent vertical band as the only subject in the figure
# note the zorder argument used here
ax.axvspan(2014.8, 2017.8, color="DarkGoldenRod", alpha=0.3, zorder=-1)
# setting up axes
ax.set_xlim(2008, 2030)
ax.set_ylim(-2, 2)
# if you toggle this to False, the axes are hidden
if True :
    # manually setting ticks
    ticks = np.arange(2008, 2030, 2)
    ax.set_xticks(ticks)
    ax.set_xticklabels([r"$\mathrm{" + str(r) + r"}$" for r in ticks], fontsize=26, rotation=30)
    ax.get_xaxis().tick_bottom()
    ax.set_yticks([]) 
# hide all except for the bottom axes
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['left'].set_visible(False)
# if you toggle this to False, the axes are hidden
if True :
    # this is to make sure the rasterization works.
    ax.set_rasterization_zorder(0)
# save into eps and png separately
fig.savefig("test.eps", papertype="a4", format="eps", bbox_inches='tight', pad_inches=0.1, dpi=None)
fig.savefig("test.png", papertype="a4", format="png", bbox_inches='tight', pad_inches=0.1, dpi=None)

epsのスクリーンショット

eps

そしてpngの場合

png

4

2 に答える 2

2

これは、修正された mpl ( https://github.com/matplotlib/matplotlib/issues/2473 )のバグ ( https://github.com/matplotlib/matplotlib/pull/2479 ) が原因でした。

問題は、AGG の空のキャンバスのデフォルトの色が (0, 0, 0, 0) (完全に透明な黒) だったが、eps はアルファを処理しない (ドロップされるだけ) ため、(0,0,0,0) であることです。 -> eps ファイルに押し込むと (0,0,0)。軸をオフにすると、キャンバスのその領域も描画されないため、デフォルトの色のままになります。受け入れられた答えは、ラスタライズ中にこれらのピクセルを強制的にレンダリング (および白い背景に合成) するため、eps ファイルに黒い線が表示されません。

于 2014-11-26T18:38:36.213 に答える