<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic gpie: colors with alpha transparency in SAS/IML Software and Matrix Computations</title>
    <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/gpie-colors-with-alpha-transparency/m-p/45113#M250</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;As far as I know, the old G-style graphics in PROC IML do not support transparency.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you have SAS 9.22 or later, you can use the SUBMIT/ENDSUBMIT statements in the twocirc module. &lt;/P&gt;&lt;P&gt;I think I'd try to solve this problem by using a SUBMIT statement&amp;nbsp; to call a SAS/GRAPH or ODS Graphics procedure that supports transparency.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 10 Nov 2011 16:15:26 GMT</pubDate>
    <dc:creator>Rick_SAS</dc:creator>
    <dc:date>2011-11-10T16:15:26Z</dc:date>
    <item>
      <title>gpie: colors with alpha transparency</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/gpie-colors-with-alpha-transparency/m-p/45112#M249</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;[Running SAS 9.2 on linux]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This may be more a SAS/Graph question, but occurs in an IML context...&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;A cc:'d reply to &lt;/SPAN&gt;&lt;A class="jive-link-email-small" href="mailto:friendly@yorku.ca"&gt;friendly@yorku.ca&lt;/A&gt;&lt;SPAN&gt; would be appreciated, if this doesn't violate protocol for this discussion.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the code below, I am plotting two overlapping circles using gpie and wish to draw attention to the area of overlap.&lt;/P&gt;&lt;P&gt;Rather than using cross-hatch patterns, I would prefer solid fill using transparent colors.&amp;nbsp; I tried appending&lt;/P&gt;&lt;P&gt;an alpha value to the hex codes for red and blue, e.g., CXrrggbbaa, but that doesn't have an effect.&lt;/P&gt;&lt;P&gt;Does SAS 9.2 support transparent colors in some other way?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc iml;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;start twocirc(cx, cy, radius, r, labels, colors, patterns);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; *-- Draw two circles showing partial relations;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; rsq = r##2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; d = centdist( rsq ) # radius;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; x&amp;nbsp; = (cx - d/2)//&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (cx + d/2);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; y&amp;nbsp; = cy // cy;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; print 'Circle centers', x y radius rsq;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; call gpie(x, y, radius, 0, 360, colors, , patterns);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; call gpiexy(lx1, ly1, 1.25, 240, x[1]||y[1], radius);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; call gpiexy(lx2, ly2, 1.25, 300, x[2]||y[2], radius);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; call gstrlen(len,labels);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; lx = lx1-len[1] // lx2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; ly = ly1 // ly2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; call gscript(lx, ly, labels);&lt;/P&gt;&lt;P&gt;finish;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;start centdist( r );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; *-- Compute distance between centers of circles from rsq;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if r = 1 then return( 0 );&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* complete overlap&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; else if r = 0 then return( 2 );&amp;nbsp;&amp;nbsp;&amp;nbsp; /* completely disjoint&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; else do;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* intersecting circles */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pi = 3.14159;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lo = 0;&amp;nbsp; hi = pi;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* angle theta, 0 &amp;lt;= theta &amp;lt;= pi radians */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; q = r # pi;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* sector area of overlap */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; old = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alpha = pi/2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delta = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iter=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do until (delta &amp;lt; .001);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iter = iter + 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if iter &amp;gt; 20 then goto done;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; z = alpha - sin(alpha);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if z = q then delta = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else do;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* adjust */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; old = alpha;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if z &amp;gt; q then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alpha = alpha - (alpha-lo)/2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hi = old;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alpha = alpha + (hi-alpha)/2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lo = old;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delta = abs(old-alpha);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;done:&lt;/P&gt;&lt;P&gt;*&amp;nbsp; print iter alpha delta lo hi;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; alpha = alpha/2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; dist = 2 # cos(alpha);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; return( dist );&lt;/P&gt;&lt;P&gt;finish;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; call gstart;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; call gwindow({-5 -5 , 104 104});&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; colors = { 'CXFF00000080', 'CX0000FF80' };&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; patterns = {'psolid', 'psolid'};&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; cx = 50; cy=50;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; rad = 25;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; r = .60;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; lab = {'Y.X' 'X.Y'};&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; run twocirc(cx, cy, rad, r, lab, colors, patterns);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; call gshow;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Nov 2011 14:20:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/gpie-colors-with-alpha-transparency/m-p/45112#M249</guid>
      <dc:creator>michael_friendly</dc:creator>
      <dc:date>2011-11-10T14:20:26Z</dc:date>
    </item>
    <item>
      <title>gpie: colors with alpha transparency</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/gpie-colors-with-alpha-transparency/m-p/45113#M250</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;As far as I know, the old G-style graphics in PROC IML do not support transparency.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you have SAS 9.22 or later, you can use the SUBMIT/ENDSUBMIT statements in the twocirc module. &lt;/P&gt;&lt;P&gt;I think I'd try to solve this problem by using a SUBMIT statement&amp;nbsp; to call a SAS/GRAPH or ODS Graphics procedure that supports transparency.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Nov 2011 16:15:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/gpie-colors-with-alpha-transparency/m-p/45113#M250</guid>
      <dc:creator>Rick_SAS</dc:creator>
      <dc:date>2011-11-10T16:15:26Z</dc:date>
    </item>
  </channel>
</rss>

