Hello everyone!
<SPAN class="kwd"><BR /></SPAN><SPAN class="pun"></SPAN>
I'm creating a customizing tools in arcgis. I want to show some diagrams in arcgis, which made by matplotlib.
Everything works fine, the diagram kann even be saved in the right way, except when I show the plot through <SPAN class="pln">plt</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">show</SPAN><SPAN class="pun">()</SPAN>, ArcGIS hangs and I have to force it to close with Task Manager.
Changing plt.show() to plt.show(block=False) should make the plot non-blocking, but this crashes ArcMap either, with a Runtime Error.
I am working with Windows 7 and ArcGIS 10.1.
The codes are something like:
<SPAN class="kwd">import</SPAN><SPAN class="pln"> ConversionUtils<BR /></SPAN>
<SPAN class="kwd">import</SPAN><SPAN class="pln"> arcpy </SPAN>
<SPAN class="kwd">from</SPAN><SPAN class="pln"> arcpy </SPAN><SPAN class="kwd">import</SPAN><SPAN class="pln"> env </SPAN>
<SPAN class="kwd">import</SPAN><SPAN class="pln"> matplotlib</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">pyplot </SPAN><SPAN class="kwd">as</SPAN><SPAN class="pln"> plt </SPAN>
<SPAN class="pln">xLabelName = ConversionUtils.gp.GetParameterAsText(0)<BR /></SPAN>
<SPAN class="pln">yLabelName = ConversionUtils.gp.GetParameterAsText(1)</SPAN>
<SPAN class="pln"><SPAN class="pln"><SPAN class="pln"><SPAN class="pln"><SPAN class="pln">Titel = ConversionUtils.gp.GetParameterAsText(2)</SPAN></SPAN></SPAN></SPAN><BR /></SPAN>
<SPAN class="pln">fig </SPAN><SPAN class="pun">=</SPAN><SPAN class="pln"> plt</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">figure</SPAN><SPAN class="pun">()</SPAN><SPAN class="pln"><BR />plt</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">plot</SPAN><SPAN class="pun">(</SPAN><SPAN class="pln">range</SPAN><SPAN class="pun">(</SPAN><SPAN class="lit">10</SPAN><SPAN class="pun">),</SPAN><SPAN class="pln"> range</SPAN><SPAN class="pun">(</SPAN><SPAN class="lit">10</SPAN><SPAN class="pun">))</SPAN><SPAN class="pln"><BR /></SPAN>
<SPAN class="pln">plt</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">xlabel</SPAN><SPAN class="pun">(</SPAN><SPAN class="str">xLabelName, fontsize = 14</SPAN><SPAN class="pun">)</SPAN><SPAN class="pln"> </SPAN>
<SPAN class="pln">plt</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">ylabel</SPAN><SPAN class="pun">(</SPAN><SPAN class="str">yLabelName, fontsize = 14</SPAN><SPAN class="pun">)</SPAN><SPAN class="pln"> </SPAN>
<SPAN class="pun">plt.title(str(Titel), fontsize = 16)</SPAN>
<SPAN class="pln">plt</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">grid</SPAN><SPAN class="pun">(</SPAN><SPAN class="pun">)</SPAN><SPAN class="pln"> </SPAN>
<SPAN class="pln">plt</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">savefig</SPAN><SPAN class="pun">(</SPAN><SPAN class="str">'abc.png'</SPAN><SPAN class="pun">)</SPAN><SPAN class="pln"> </SPAN>
<SPAN class="pln">plt</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">show</SPAN><SPAN class="pun">()</SPAN>
Because matplotlib uses TKinter by default, so the window pop up from <SPAN class="pln">plt</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">show</SPAN><SPAN class="pun">()</SPAN> crashes ArcGIS.
The problem has been bothering me for days. I will greatly appreciate any ideas on how can I solve this Problem.
Thank you.