<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
  <channel>
    <title>MaplePrimes - answers and comments on Question, BubblePlot plotting view</title>
    <link>http://www.mapleprimes.com/questions/142352-BubblePlot-Plotting-View</link>
    <language>en-us</language>
    <copyright>2026 Maplesoft, A Division of Waterloo Maple Inc.</copyright>
    <generator>Maplesoft Document System</generator>
    <lastBuildDate>Tue, 09 Jun 2026 09:28:47 GMT</lastBuildDate>
    <pubDate>Tue, 09 Jun 2026 09:28:47 GMT</pubDate>
    <itunes:subtitle />
    <itunes:summary />
    <description>The latest answers and comments added to the Question, BubblePlot plotting view</description>
    <image>
      <url>http://www.mapleprimes.com/images/mapleprimeswhite.jpg</url>
      <title>MaplePrimes - answers and comments on Question, BubblePlot plotting view</title>
      <link>http://www.mapleprimes.com/questions/142352-BubblePlot-Plotting-View</link>
    </image>
    <item>
      <title>Use plottools:-transform like an eraser</title>
      <link>http://www.mapleprimes.com/questions/142352-BubblePlot-Plotting-View?ref=Feed:MaplePrimes:BubblePlot plotting view:Comments#answer142354</link>
      <itunes:summary>&lt;p&gt;We can use &lt;strong&gt;plottools:-transform&lt;/strong&gt; like an eraser on an existing &lt;strong&gt;PLOT&lt;/strong&gt; structure by converting points outside a desired view to &lt;strong&gt;undefined&lt;/strong&gt;. Then they will stay &lt;strong&gt;undefined&lt;/strong&gt; if the &lt;strong&gt;VIEW&lt;/strong&gt; is subsequently enlarged. (I'm using all caps for certain words because that's how they appear in the &lt;strong&gt;PLOT &lt;/strong&gt;structure.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;a:= Statistics:-BubblePlot([4, 5, 2, 3], [1, 2, 7, 8], [8, 1, 3, 2]):&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;Eraser:= (x,y)-&amp;gt; [x, `if`(4 &amp;lt;= y and y &amp;lt;= 9, y, undefined)]:&lt;br&gt;&lt;strong&gt;a1:= plottools:-transform(Eraser)(a):&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;plots:- display(a1);&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;em&gt;[plot not shown in post]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;strong&gt;plots:-display(a1, view= [default, 0..9]);&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [plot not shown in post]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;/em&gt;The above procedure &lt;strong&gt;Eraser&lt;/strong&gt; is &lt;em&gt;ad hoc&lt;/em&gt;, for your particular &lt;strong&gt;view&lt;/strong&gt;; but I can easily generalize it so that it will extract the range(s) from the &lt;strong&gt;VIEW&lt;/strong&gt; option of an existing &lt;strong&gt;PLOT&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Note that however you change the view in a &lt;strong&gt;BubblePlot&lt;/strong&gt;, the circles will be distorted to ellipses because they are created as &lt;strong&gt;POLYGON&lt;/strong&gt;s, rather than as single points. This also means that they may be cut by an invisible horizontal or vertical line. If you want to erase points without changing the axes (which means that circles would stay circles), I'll have to think of something else.&lt;strong&gt;&lt;br&gt;&lt;/strong&gt;&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;We can use &lt;strong&gt;plottools:-transform&lt;/strong&gt; like an eraser on an existing &lt;strong&gt;PLOT&lt;/strong&gt; structure by converting points outside a desired view to &lt;strong&gt;undefined&lt;/strong&gt;. Then they will stay &lt;strong&gt;undefined&lt;/strong&gt; if the &lt;strong&gt;VIEW&lt;/strong&gt; is subsequently enlarged. (I'm using all caps for certain words because that's how they appear in the &lt;strong&gt;PLOT &lt;/strong&gt;structure.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;a:= Statistics:-BubblePlot([4, 5, 2, 3], [1, 2, 7, 8], [8, 1, 3, 2]):&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;Eraser:= (x,y)-&amp;gt; [x, `if`(4 &amp;lt;= y and y &amp;lt;= 9, y, undefined)]:&lt;br&gt;&lt;strong&gt;a1:= plottools:-transform(Eraser)(a):&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;plots:- display(a1);&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;em&gt;[plot not shown in post]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;strong&gt;plots:-display(a1, view= [default, 0..9]);&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [plot not shown in post]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;/em&gt;The above procedure &lt;strong&gt;Eraser&lt;/strong&gt; is &lt;em&gt;ad hoc&lt;/em&gt;, for your particular &lt;strong&gt;view&lt;/strong&gt;; but I can easily generalize it so that it will extract the range(s) from the &lt;strong&gt;VIEW&lt;/strong&gt; option of an existing &lt;strong&gt;PLOT&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Note that however you change the view in a &lt;strong&gt;BubblePlot&lt;/strong&gt;, the circles will be distorted to ellipses because they are created as &lt;strong&gt;POLYGON&lt;/strong&gt;s, rather than as single points. This also means that they may be cut by an invisible horizontal or vertical line. If you want to erase points without changing the axes (which means that circles would stay circles), I'll have to think of something else.&lt;strong&gt;&lt;br&gt;&lt;/strong&gt;&lt;/p&gt;</description>
      <guid>142354</guid>
      <pubDate>Fri, 18 Jan 2013 02:04:02 Z</pubDate>
      <itunes:author>Carl Love</itunes:author>
      <author>Carl Love</author>
    </item>
    <item>
      <title>Yes, with indets and op</title>
      <link>http://www.mapleprimes.com/questions/142352-BubblePlot-Plotting-View?ref=Feed:MaplePrimes:BubblePlot plotting view:Comments#answer142359</link>
      <itunes:summary>&lt;p&gt;Indeed, here is the procedure.&amp;nbsp; It takes a &lt;strong&gt;PLOT&lt;/strong&gt; structure containing a &lt;strong&gt;VIEW&lt;/strong&gt; as input and returns the &lt;strong&gt;PLOT &lt;/strong&gt;structure with the appropriate points erased.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Eraser:= proc(P::specfunc(function,PLOT))&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;# Uses the VIEW specification of a PLOT structure to erase points outside the view.&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; local&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x1,x2,y1,y2&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,View:= indets(P, specfunc(anything, VIEW))&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; ;&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; if nops(View) = 0 then&amp;nbsp; return P&amp;nbsp; end if;&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; if nops(View) &amp;gt; 1 then&amp;nbsp; error "Multiple VIEWs found: %1", View&amp;nbsp; end if;&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; View:= View[];&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; PLOT(&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; op(&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; plottools:-transform(&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subs(&lt;/strong&gt;&lt;br&gt;&lt;strong&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; [x1,x2,y1,y2] =~ [op](map(op, subs(DEFAULT= -infinity..infinity, View)))&lt;/strong&gt;&lt;br&gt;&lt;strong&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; ,(x,y)-&amp;gt; `if`(`or`(x1 &amp;gt; x,x &amp;gt; x2, y1 &amp;gt; y,y &amp;gt; y2), [undefined$2], [x,y])&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )(P)&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,View&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; ) &lt;/strong&gt;&lt;br&gt;&lt;strong&gt;end proc:&lt;/strong&gt;&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;Indeed, here is the procedure.&amp;nbsp; It takes a &lt;strong&gt;PLOT&lt;/strong&gt; structure containing a &lt;strong&gt;VIEW&lt;/strong&gt; as input and returns the &lt;strong&gt;PLOT &lt;/strong&gt;structure with the appropriate points erased.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Eraser:= proc(P::specfunc(function,PLOT))&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;# Uses the VIEW specification of a PLOT structure to erase points outside the view.&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; local&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x1,x2,y1,y2&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,View:= indets(P, specfunc(anything, VIEW))&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; ;&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; if nops(View) = 0 then&amp;nbsp; return P&amp;nbsp; end if;&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; if nops(View) &amp;gt; 1 then&amp;nbsp; error "Multiple VIEWs found: %1", View&amp;nbsp; end if;&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; View:= View[];&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; PLOT(&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; op(&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; plottools:-transform(&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subs(&lt;/strong&gt;&lt;br&gt;&lt;strong&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; [x1,x2,y1,y2] =~ [op](map(op, subs(DEFAULT= -infinity..infinity, View)))&lt;/strong&gt;&lt;br&gt;&lt;strong&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; ,(x,y)-&amp;gt; `if`(`or`(x1 &amp;gt; x,x &amp;gt; x2, y1 &amp;gt; y,y &amp;gt; y2), [undefined$2], [x,y])&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )(P)&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,View&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; ) &lt;/strong&gt;&lt;br&gt;&lt;strong&gt;end proc:&lt;/strong&gt;&lt;/p&gt;</description>
      <guid>142359</guid>
      <pubDate>Fri, 18 Jan 2013 05:11:56 Z</pubDate>
      <itunes:author>Carl Love</itunes:author>
      <author>Carl Love</author>
    </item>
    <item>
      <title>Modification so that the axes don't change</title>
      <link>http://www.mapleprimes.com/questions/142352-BubblePlot-Plotting-View?ref=Feed:MaplePrimes:BubblePlot plotting view:Comments#answer142370</link>
      <itunes:summary>&lt;p&gt;I've modified the above so that the axes don't change due to the erasure, and the original axes will be restored if the &lt;strong&gt;VIEW&lt;/strong&gt; is reverted to default by a subsequent &lt;strong&gt;display&lt;/strong&gt;. So it is now more like erasing part of a blackboard (and circles will remain circles), whereas before it was like cutting off part of the blackboard. I do this by keeping track of the extreme upper, lower, left, and right points as they pass through the transformer procedure. Then I add an invisible (&lt;strong&gt;color= white&lt;/strong&gt;) plot of the two extreme points: lower left and upper right.&lt;/p&gt;
&lt;p&gt;It probably goes without saying that this procedure should work for any 2D plot, not just &lt;strong&gt;BubblePlot&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Eraser:= proc(Plot::specfunc(function,PLOT))&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;# Uses the VIEW specification of a PLOT structure to erase points outside the view.&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;# Input: PLOT structure with VIEW; Output: The PLOT structure, modified. &lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; local&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x1,x2,y1,y2,newPlot&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,minx:= infinity, miny:= infinity, maxx:= -infinity, maxy:= -infinity&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,View:= indets(Plot, specfunc(anything, VIEW))&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; ;&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; if View = {} then&amp;nbsp; return Plot&amp;nbsp; end if;&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; if nops(View) &amp;gt; 1 then&amp;nbsp; error "Multiple VIEWs found: %1", View&amp;nbsp; end if;&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; View:= View[];&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; newPlot:= &lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; plottools:-transform(&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subs(&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [x1,x2,y1,y2] =~ [op(1..4, map(op, subs(DEFAULT= -infinity..infinity, View)))]&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,proc(x,y)&lt;/strong&gt;&lt;br&gt;&lt;strong&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; if not(x::numeric and y::numeric) then&amp;nbsp; return [args][1..2]&amp;nbsp; end if;&lt;/strong&gt;&lt;br&gt;&lt;strong&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; if x &amp;lt; minx then&amp;nbsp; minx:= x&amp;nbsp; end if;&amp;nbsp; if x &amp;gt; maxx then&amp;nbsp; maxx:= x&amp;nbsp; end if;&lt;/strong&gt;&lt;br&gt;&lt;strong&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; if y &amp;lt; miny then&amp;nbsp; miny:= y&amp;nbsp; end if;&amp;nbsp; if y &amp;gt; maxy then&amp;nbsp; maxy:= y&amp;nbsp; end if;&lt;/strong&gt;&lt;br&gt;&lt;strong&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; `if`(`or`(x1 &amp;gt; x,x &amp;gt; x2, y1 &amp;gt; y,y &amp;gt; y2), [undefined$2], [x,y])&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;&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end proc&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )(Plot)&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; ;&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; # Add two invisible (white) points at extreme corners of original plot so axes don't change.&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; # plottools:-transform removes VIEW, so put it back.&lt;/strong&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;strong&gt;plots:-display(&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; [plots:-pointplot([[minx,miny],[maxx,maxy]], color= white), newPlot]&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; ,view= [op(1..2, View)]&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; )&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;end proc:&lt;/strong&gt;&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;I've modified the above so that the axes don't change due to the erasure, and the original axes will be restored if the &lt;strong&gt;VIEW&lt;/strong&gt; is reverted to default by a subsequent &lt;strong&gt;display&lt;/strong&gt;. So it is now more like erasing part of a blackboard (and circles will remain circles), whereas before it was like cutting off part of the blackboard. I do this by keeping track of the extreme upper, lower, left, and right points as they pass through the transformer procedure. Then I add an invisible (&lt;strong&gt;color= white&lt;/strong&gt;) plot of the two extreme points: lower left and upper right.&lt;/p&gt;
&lt;p&gt;It probably goes without saying that this procedure should work for any 2D plot, not just &lt;strong&gt;BubblePlot&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Eraser:= proc(Plot::specfunc(function,PLOT))&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;# Uses the VIEW specification of a PLOT structure to erase points outside the view.&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;# Input: PLOT structure with VIEW; Output: The PLOT structure, modified. &lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; local&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x1,x2,y1,y2,newPlot&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,minx:= infinity, miny:= infinity, maxx:= -infinity, maxy:= -infinity&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,View:= indets(Plot, specfunc(anything, VIEW))&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; ;&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; if View = {} then&amp;nbsp; return Plot&amp;nbsp; end if;&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; if nops(View) &amp;gt; 1 then&amp;nbsp; error "Multiple VIEWs found: %1", View&amp;nbsp; end if;&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; View:= View[];&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; newPlot:= &lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; plottools:-transform(&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subs(&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [x1,x2,y1,y2] =~ [op(1..4, map(op, subs(DEFAULT= -infinity..infinity, View)))]&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,proc(x,y)&lt;/strong&gt;&lt;br&gt;&lt;strong&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; if not(x::numeric and y::numeric) then&amp;nbsp; return [args][1..2]&amp;nbsp; end if;&lt;/strong&gt;&lt;br&gt;&lt;strong&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; if x &amp;lt; minx then&amp;nbsp; minx:= x&amp;nbsp; end if;&amp;nbsp; if x &amp;gt; maxx then&amp;nbsp; maxx:= x&amp;nbsp; end if;&lt;/strong&gt;&lt;br&gt;&lt;strong&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; if y &amp;lt; miny then&amp;nbsp; miny:= y&amp;nbsp; end if;&amp;nbsp; if y &amp;gt; maxy then&amp;nbsp; maxy:= y&amp;nbsp; end if;&lt;/strong&gt;&lt;br&gt;&lt;strong&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; `if`(`or`(x1 &amp;gt; x,x &amp;gt; x2, y1 &amp;gt; y,y &amp;gt; y2), [undefined$2], [x,y])&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;&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end proc&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )(Plot)&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; ;&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; # Add two invisible (white) points at extreme corners of original plot so axes don't change.&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; # plottools:-transform removes VIEW, so put it back.&lt;/strong&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;strong&gt;plots:-display(&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; [plots:-pointplot([[minx,miny],[maxx,maxy]], color= white), newPlot]&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; ,view= [op(1..2, View)]&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; )&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;end proc:&lt;/strong&gt;&lt;/p&gt;</description>
      <guid>142370</guid>
      <pubDate>Fri, 18 Jan 2013 12:52:25 Z</pubDate>
      <itunes:author>Carl Love</itunes:author>
      <author>Carl Love</author>
    </item>
    <item>
      <title>indets</title>
      <link>http://www.mapleprimes.com/questions/142352-BubblePlot-Plotting-View?ref=Feed:MaplePrimes:BubblePlot plotting view:Comments#comment142358</link>
      <itunes:summary>&lt;p&gt;I suppose that could do. Not to bring our options to an end.&lt;/p&gt;
&lt;p&gt;Regarding pulling the data out of the graph for a generalization, I suppose you would mean using indets and op, so something like this if&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;a:= Statistics:-BubblePlot([4, 5, 2, 3], [1, 2, 7, 8], [8, 1, 3, 2],view=[default,0..9]):&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;myrange:=op(indets(a, specfunc(anything, VIEW)))&lt;/p&gt;
&lt;p&gt;myx:=op(myrange)[1]&lt;br&gt;myy:=op(myrange)[2]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;I suppose that could do. Not to bring our options to an end.&lt;/p&gt;
&lt;p&gt;Regarding pulling the data out of the graph for a generalization, I suppose you would mean using indets and op, so something like this if&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;a:= Statistics:-BubblePlot([4, 5, 2, 3], [1, 2, 7, 8], [8, 1, 3, 2],view=[default,0..9]):&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;myrange:=op(indets(a, specfunc(anything, VIEW)))&lt;/p&gt;
&lt;p&gt;myx:=op(myrange)[1]&lt;br&gt;myy:=op(myrange)[2]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <guid>142358</guid>
      <pubDate>Fri, 18 Jan 2013 04:56:44 Z</pubDate>
      <itunes:author>Christopher2222</itunes:author>
      <author>Christopher2222</author>
    </item>
    <item>
      <title>Bug in 16.02 Standard GUI</title>
      <link>http://www.mapleprimes.com/questions/142352-BubblePlot-Plotting-View?ref=Feed:MaplePrimes:BubblePlot plotting view:Comments#comment142423</link>
      <itunes:summary>&lt;p&gt;A bug just introduced into the Maple 16.02 Standard GUI plot renderer makes it appear that the above procedure doesn't work with regular plots: The entire plot appears blank. But if you use the context menu "Manipulator" to "Pan" the plot, the curve will appear.&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;A bug just introduced into the Maple 16.02 Standard GUI plot renderer makes it appear that the above procedure doesn't work with regular plots: The entire plot appears blank. But if you use the context menu "Manipulator" to "Pan" the plot, the curve will appear.&lt;/p&gt;</description>
      <guid>142423</guid>
      <pubDate>Sun, 20 Jan 2013 06:21:35 Z</pubDate>
      <itunes:author>Carl Love</itunes:author>
      <author>Carl Love</author>
    </item>
  </channel>
</rss>