2015-11-26 448 views
1

我有一個相當簡單的情節,突然開始發瘋後,我改變了後端的東西,爲另一個項目使用seaborn錯誤使得它有必要改變後端正確的結果。Matplotlib劇情搞砸了

但是,我一定做了一些改變了完全繪製地塊的方式,因爲我的地塊的框架現在已經消失了,並且地塊的背景也是如此。這是兩張圖(數據不同,沒有「好人」的所有備份),左邊是它應該看起來像的樣子,右邊是當前。

我改變的唯一的事情就是運行命令export MPLBACKEND="module://WXAgg"。我已經重新啓動了我的電腦,甚至重新安裝了matplotlib以查看是否可以修復這些問題。但它仍然是一樣的。

任何幫助將不勝感激,我相信這僅僅是我的經驗不足,使得這種顯得如此難以解決......

編輯我繼續看看這個,但仍不能找到解決方案。它似乎不是我對後端的修改,但我不知道還有什麼可以指責的。我已經將我的腳本恢復到我知道沒有問題的舊版本,並且我在另一臺計算機上運行了腳本,沒有任何問題!

這裏是當前凝聚態腳本:

import matplotlib 
matplotlib.use('pdf') 
import matplotlib.pyplot as plt 

def ColumnDensity_withTimeList(inputdirs, species_list, model_data, abundances, times_list, parameter_label, plot_dir, style, single_plots, column_density_limit): 

for s in range(0, len(species_list)): 
    for d in range(0, len(inputdirs)): 
     patches  = [] 
     radii  = model_data[d]['radii'][:,0] 
     f, ax  = plt.subplots(1,1) 

     for t in range(0, len(times_list)): 

      ax.loglog(radii, abundances, color='black') 
      ax.grid(b=True, which='major', color='lightgray', linestyle='--') 
      f.subplots_adjust(right=0.75) 
      ax2 = ax.twinx() 
      ax2.semilogy(radii, model_data[d]['temperatures'], 'r--') 
      ax2.set_ylabel('Temperature [K]', color='r') 
      for tl in ax2.get_yticklabels(): 
       tl.set_color('r') 

      ax3 = ax.twinx() 
      ax3.set_frame_on(True) 
      ax3.patch.set_visible(False) 
      ax3.spines['right'].set_position(('axes', 1.2)) 
      ax3.semilogy(radii, model_data[d]['densities'], 'b--') 
      ax3.set_ylabel('Density [cm-3]', color='b') 
      for tl in ax3.get_yticklabels(): 
       tl.set_color('b') 

      plt.savefig(filename + ".pdf") 
      plt.close() 

Correct plot Faulty plot

+0

有沒有人,有一個線索什麼嘗試?我嘗試過正常情節,他們都很好。我真的試圖以任何方式剝離改變情節的所有命令,所以就我所見,只剩下不同的設置,例如後端等,這可能是錯誤。 任何提示我應該在哪裏看下? – Tobias

+0

試試'export MPLBACKEND =「TkAgg」' – oliversm

回答

0

經過很多問題解決這個問題後,我發現它實際上是導入seaborn這是我的問題。如果我將它移到使用它的地方,可能會使其他地方不受影響,我的問題就解決了。

爲什麼進口seaborn要改變所有的圖我不明白,但我現在知道要更加小心,我把我的進口...

0

至於我可以看到,該地塊之間的唯一區別是,在左側框顯示和隱藏在右側。我不確定seaborn是做什麼的,但看起來你已經改變了這些參數的默認設置。 您可以用plt.box('off')/plt.box('on')明確打開和關閉框。對於圖例,您可以傳遞參數frameon = True/False

編輯: 嘗試以下方法:找到你的rcparams文件(matplotlib.matplotlib_fname())。將以下行粘貼到其中:

axes.facecolor:white  
axes.edgecolor:black 
legend.frameon: True 

重新運行您的腳本。

+0

對不起,我可能不太清楚。我在後臺使用了seaborn的不同情節進行了更改。不過,對於這個例子,我使用純粹的matplotlib.pyplot。我添加了一個新的圖表,顯示問題可能會更好。問題在於背景是灰色的,並且當我將額外的軸添加到右側時,出現某些原因出現奇怪的白色線條。 請忽略該數據本身,我沒有相同的數據集來再現「原始」工作圖。灰色背景,缺失的框架和灰色背景中的奇數白色條紋是問題所在。 – Tobias

+0

好的,你做的事情必須改變數字的默認設置。請參閱已編輯的答案。 – thomas

+0

我試過了,它確實將圖塊背景顏色還原成白色,但是圖塊的框架仍然消失。 我還注意到了情節之間的另一個區別:蜱從「失敗」情節中的盒子向外指出,但是在「好」情節中向內。這可能會讓問題更加明白嗎? – Tobias