2013-11-04 52 views
2

已經設置爲不可見軸,我設法把這些線在我的matplotlib代碼幻象軸儘管matplotlib

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

在保存的圖像隱藏頂部,右側的希望,左軸。他們在PNG圖像上工作得很好,但在保存的eps文件中,左側和頂部(右側軸確實消失)仍然存在邊界(不確定它們是否是軸)。

有關如何在保存爲EPS圖像時如何隱藏軸/邊框邊界的任何想法?

BTW:我不想

ax.axis('off') 

,因爲我確實需要中軸下方工作。

EDIT

我只是做了多次試驗用下面的最小工作示例中,原來的軸將是不可見的,即使在EPS輸出,如果我任 1)關閉光柵化在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

+0

你能發表該eps文件的截圖嗎? – Raiyan

+0

@Raiyan完成,示例代碼,新發現,以及顯示的數字。 – nye17

+0

嘿,我只是在我的電腦上運行你的代碼;該eps頂部沒有黑線。 – Raiyan

回答

0

作爲工作的時候,我會建議增加這行代碼:

ax.spines['top'].set_color((0,0,0,0)) 

我基本上把頂軸設置爲透明。

+0

很好的調整。我沒有測試,但它應該工作。我會再等幾天,看看是否有更多的破壞而不是僞裝。 – nye17

1

這是由於已修復mpl(https://github.com/matplotlib/matplotlib/issues/2473)中的一個錯誤(https://github.com/matplotlib/matplotlib/pull/2479)。

問題是AGG中空畫布的默認顏色是(0,0,0,0)(完全透明的黑色),但是eps不處理alpha(它只是被丟棄)所以(0,0, 0,0) - >(0,0,0)當推入一個eps文件。如果關閉軸,那麼畫布的該區域永遠不會被繪製,因此它保持默認顏色。接受的答案迫使這些像素在光柵化過程中得到渲染(併合成到白色背景上),所以您在eps文件中看不到黑線。