<div dir="ltr"><div class="gmail_default" style="font-size:small">Xiaoni,</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">To help answer some of your graphical questions, I suggest looking at our large collection of NCL examples at:</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default"><a href="http://www.ncl.ucar.edu/Applications/">http://www.ncl.ucar.edu/Applications/</a><br></div><div class="gmail_default"><br></div><div class="gmail_default">While these are written in NCL, they use the same plot options as PyNGL, and may help you find the answers you need.  </div><div class="gmail_default"><br></div><div class="gmail_default">Please see my answers interspersed:</div><div class="gmail_default"><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Oct 25, 2016 at 4:38 AM, Xiaoni Wang <span dir="ltr">&lt;<a href="mailto:xiaoni.wang@obspm.fr" target="_blank">xiaoni.wang@obspm.fr</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word">Hi Mary<div>    Thank you very much for all your useful information ! Now my plots work well. Just I have a few more questions to clarify some confusion.</div><div><br></div><div>1) In my data, I do not have any data over the ocean. I noticed that there is strong interpolation over ocean in the figure (see any figure attached), which are not necessary. It seems that I could use resources.<a href="http://www.ncl.ucar.edu/Document/Graphics/Resources/mp.shtml#mpGridMaskMode" style="line-height:1.3" target="_blank"><em style="font-weight:700">mpGridMaskMode</em></a>        = &quot;MaskOcean » , but it seems not working.</div><div>   PS: I prefer that ocean would be white color for example. What shall I do ?</div></div></blockquote><div><br></div><div><div class="gmail_default" style="font-size:small;display:inline">​The easiest thing to do is turn on map fill, and then draw the ocean fill in white:</div></div><div><div class="gmail_default" style="font-size:small;display:inline"><br></div></div><div><div class="gmail_default" style="font-size:small;display:inline"><font face="monospace, monospace">res.mpFillOn = True</font></div></div><div><div class="gmail_default" style="font-size:small;display:inline"><font face="monospace, monospace">res.mpOceanFillColor = &quot;white&quot;</font></div></div><div><div class="gmail_default" style="font-size:small;display:inline"><br></div></div><div><div class="gmail_default" style="font-size:small">​If that doesn&#39;t work, you might also need:</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"><font face="monospace, monospace">res.mpFillDrawOrder = &quot;PostDraw&quot;</font></div><div class="gmail_default" style="font-size:small">​</div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word"><div><br></div><div>2) Over small islands, the interpolation method also produced some effects (see large yellow areas on the ocean in figure isccp_19V.00001.png). Again I do not need the ocean around the island, just the results over (small) islands.</div></div></blockquote><div><br></div><div><div class="gmail_default" style="font-size:small;display:inline">​This is simply an artifact of having a few values surrounded by a lot of missing values.  In order to plot data like this correctly, you need to have some kind of cell boundary or grid corner information, so the interpolation stays within these bounds.</div></div><div><div class="gmail_default" style="font-size:small;display:inline"><br></div></div><div><div class="gmail_default" style="font-size:small;display:inline">If you look at our NCL examples for geodesic and MPAS grids, they set these two special resources:</div></div><div><div class="gmail_default" style="font-size:small;display:inline"><font face="monospace, monospace">







<p class="gmail-p1"><span class="gmail-s1">  res@sfXCellBounds        = cx<br></span>  res@sfYCellBounds        = cy</p></font></div></div><div class="gmail_default" style="font-size:small">​which were read off a file, and are usually dimensioned something like N x 4 or N x 3 where N is the number of cell centers, and the 3 or 4 represents the number of vertices of a polygon that surrounds each cell center.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">You can see the NCL code for these examples at:</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default"><a href="http://www.ncl.ucar.edu/Applications/geodesic.shtml">http://www.ncl.ucar.edu/Applications/geodesic.shtml</a><br></div><div class="gmail_default"><a href="http://www.ncl.ucar.edu/Applications/mpas.shtml">http://www.ncl.ucar.edu/Applications/mpas.shtml</a>  (see example mpas_cell_3.ncl)<br></div><div class="gmail_default" style="font-size:small">​</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word"><div><br></div><div>3) I would like to increase the figure size of figure. I tried :</div><div><div>resources.vpXF      = 0.1    # Change the size and location of the</div><div>    resources.vpYF      = 0.9    # plot on the viewport.</div><div>    resources.vpWidthF  = 0.4</div><div>    resources.vpHeightF = 0.8</div></div></div></blockquote><div><br></div><div><div class="gmail_default" style="font-size:small;display:inline">​These resources change the size of the image within a unit square.  If you are trying to increase the size of the PNG image, then you need to do this when you open the workstation:</div></div><div><div class="gmail_default" style="display:inline"><br></div></div><div><font face="monospace, monospace">wkres =  Ngl.Resources()</font></div><div><font face="monospace, monospace">wkres.wkWidth<div class="gmail_default" style="font-size:small;display:inline">​ = 2500      # Set the pixel size, must be a square</div></font></div><div><font face="monospace, monospace"><div class="gmail_default" style="font-size:small;display:inline">​</div>wkres.wkHeight  =  2500</font></div><div><font face="monospace, monospace">wks_type = &#39;png&#39;<br>wks = Ngl.open_wks(wks_type,&quot;%s/isccp_%s&quot; %(figure_dir, channelname)<div class="gmail_default" style="font-size:small;display:inline">​,wkres)​</div></font></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word"><div><p class="gmail-p1"><span class="gmail-s1"></span></p></div><div>But when I open the figure, it remains the same size, seems to me.</div><div><br></div><div>4) I would like to put the larger values in color red, and small values in blue for example. (Now it is the inverse). How to modify it ?</div></div></blockquote><div><br></div><div><div class="gmail_default" style="font-size:small;display:inline">​You can use the &quot;read_colormap_file&quot; function in PyNGL to read in the colormap as an N x 4 RGBA array, and then reverse the first dimension:​</div> </div><div><br></div>







<div><font face="monospace, monospace"><span style="font-variant-ligatures:no-common-ligatures;font-size:14px">    </span><span style="font-variant-ligatures:no-common-ligatures;font-size:14px">resources.cnFillPalette </span><span style="font-variant-ligatures:no-common-ligatures;font-size:14px">      </span><span style="font-variant-ligatures:no-common-ligatures;font-size:14px">= <div class="gmail_default" style="font-size:small;display:inline">​Ngl.read_colormap_file(​</div>&quot;BlAqGrYeOrReVi200&quot;<div class="gmail_default" style="font-size:small;display:inline">​)[::-1,:]​</div></span></font></div><div><span style="font-variant-ligatures:no-common-ligatures;font-family:monaco;font-size:14px"></span> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word"><div><br></div><div>5) Yes, indeed I have several figures to plot. I found that they are named as isccp.000001.png for example. Could I name it as isccp.model.png ?</div><div>    In my code, I will loop over several files (current figures from only do 1-time iteration). Do I have to clear something after each iteration is finished ? Actually it does not work for more than 1 iteration (message Invalid workstation).</div></div></blockquote><div><br></div><div><div class="gmail_default" style="font-size:small;display:inline">​You can only have one image per PNG file, so it&#39;s not possible to put all images in one file called &quot;isccp.model.png&quot;.</div></div><div><div class="gmail_default" style="font-size:small;display:inline"><br></div></div><div><div class="gmail_default" style="font-size:small;display:inline">It is possible to open a new workstation every time inside your do loop, but you will want to change the PNG name​.</div></div><div><div class="gmail_default" style="font-size:small;display:inline"><br></div></div><div><div class="gmail_default" style="font-size:small;display:inline">For example, if you had:</div></div><div><div class="gmail_default" style="font-size:small;display:inline"><br></div></div><div><div class="gmail_default" style="font-size:small;display:inline"><font face="monospace, monospace">varnames = [&quot;t&quot;,&quot;p&quot;,&quot;rh&quot;]</font></div></div><div><div class="gmail_default" style="font-size:small;display:inline"><font face="monospace, monospace">for vname in varnames:</font></div></div><div><div class="gmail_default" style="font-size:small;display:inline"><font face="monospace, monospace">  wks = Ngl.open_wks(wks_type,vname,wkres)</font></div></div><div><div class="gmail_default" style="font-size:small;display:inline"><font face="monospace, monospace"><br></font></div></div><div><div class="gmail_default" style="font-size:small;display:inline"><font face="monospace, monospace">  . . . code that creates a plot</font></div></div><div><div class="gmail_default" style="font-size:small;display:inline"><br></div></div><div><div class="gmail_default" style="font-size:small;display:inline">  </div></div><div><div class="gmail_default" style="font-size:small;display:inline">--Mary</div></div><div><div class="gmail_default" style="font-size:small;display:inline"><br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word"><div><br></div><div>    I attach the code and also a few figures to you. Thank you in advance for your help !</div><div><br></div><div>Best wishes,</div><div><br></div><div>Xiaoni</div><div><br></div><div></div></div><br><div style="word-wrap:break-word"><div></div></div><br><div style="word-wrap:break-word"><div></div><div><br></div><div><div><div>Le 24 oct. 2016 à 19:31, Mary Haley &lt;<a href="mailto:haley@ucar.edu" target="_blank">haley@ucar.edu</a>&gt; a écrit :</div><br class="gmail-m_-8937656517437472034Apple-interchange-newline"><blockquote type="cite"><div dir="ltr"><div style="font-size:small">Xiaoni,</div><div style="font-size:small"><br></div><div>I think the issue is that you are using &quot;resources&quot; to set wsMaximizeSize, and then you also pass this list into the contour_map call. You don&#39;t want to do this, so I suggest using a different resource list to set wsMaximizeSize:</div><div><br></div><div><div>wresources = Ngl.Resources() </div><div>wresources.wsMaximumSize = 33554432 </div></div><div style="font-size:small">Ngl.set_values(ws_id,<wbr>wresources)</div><div style="font-size:small"><br></div><div style="font-size:small">Since you have a large grid, I recommend setting res.cnFillMode = &quot;RasterFill&quot; if you haven&#39;t already. This may fix the warning as well.</div><div style="font-size:small"><div><br></div><div>You can then use &quot;resources&quot; for setting your contour plot options.<br></div><div><br></div><div>Also, I don&#39;t think you need to do all that stuff with calling get_float to retrieve a bunch of values and creating the contours twice.</div><div><br></div><div>See the modified version of your script attached.  It looks like you just sent me a partial script, so what I&#39;ve modified is just an example of how you can change your original script.</div><div><br></div><div>--Mary</div><div><br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Oct 24, 2016 at 9:52 AM, Xiaoni Wang <span dir="ltr">&lt;<a href="mailto:xiaoni.wang@obspm.fr" target="_blank">xiaoni.wang@obspm.fr</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word">Dear Sir or Madam,<div>      Sorry to write to you several emails !  I would like to update the news and questions since I have wrote to you.  I solved the installation problem of Pyngl and Pynio. I can import them without problem.</div><div><br></div><div>     Now I tried to run a python code to plot data on ISCCP grids. As I mentioned to you in my previous email, I have data such as:</div><div>      ISCCP latitude : lat_isccp, 1D, (256915,) </div><div>      ISCCP longitude: lon_isccp, (1D, (256915,)) </div><div>      data: emis, (1D , (256915,))  </div><div>      I also have the horizontal width for each grid (in km).</div><div><br></div><div>     I would like to make 2D plot on ISCCP grids. When I launched my program, it has fatal errors:</div><div>        <font color="#791a3e">fatal:ContourPlotDraw: Workspace reallocation would exceed maximum size 100000000</font></div><div>    </div><div>     After reading the FAQ, I added the following lines in my codes:</div><div><span class="gmail-m_-8937656517437472034gmail-m_-1566661684369093241Apple-tab-span" style="white-space:pre-wrap">        </span>ws_id = Ngl.get_workspace_id()</div><div>        resources = Ngl.Resources() </div><div>        resources.wsMaximumSize = 33554432 </div><div>        Ngl.set_values(ws_id,resources<wbr>)</div><div><br></div><div>    But then I got another error: </div><div>       <font color="#561029">fatal:[&quot;Error.c&quot;:406]:ErrorIn<wbr>itialize:Only one instance of ErrorClass is supported.</font></div><div><br></div><div><br></div><div>    I do not understand….. I will look again at your tutorial to get more information. The attached is the code that I used. Thank you in advance if you could give some clue.</div><div><br></div><div>Best regards</div><span class="gmail-m_-8937656517437472034gmail-HOEnZb"><font color="#888888"><div><br></div><div>Xiaoni</div><div><br></div><div></div></font></span></div><br><div style="word-wrap:break-word"><div></div><div><br></div><div><br></div><div>    </div><div><br></div></div><br></blockquote></div><br></div></div>
<span>&lt;test_mod.py&gt;</span></blockquote></div><br></div></div><br></blockquote></div><br></div></div>