#16449: Add plot() and show() methods to abstract Matroid class
-------------------------------------+-------------------------------------
       Reporter:  Jayant             |        Owner:
           Type:  enhancement        |       Status:  needs_review
       Priority:  minor              |    Milestone:  sage-6.3
      Component:  matroid theory     |   Resolution:
       Keywords:  visualization,     |    Merged in:
  geometric representation           |    Reviewers:
        Authors:                     |  Work issues:
Report Upstream:  N/A                |       Commit:
         Branch:                     |  1a26f595814e3b7ef5b01c350858d78fd3dcf56b
  u/Jayant/ticket/16449              |     Stopgaps:
   Dependencies:                     |
-------------------------------------+-------------------------------------

Comment (by Rudi):

 Hi Jayant,

 The user positioning works as advertised. Very nice!

 I just have some minor issues left. Look at the result of executing this
 code:

 {{{
 M=matroids.named_matroids.BetsyRoss()
 pos={}
 s="abcde"
 t="fghij"
 x=1.61
 y=1/1.61
 for i in range(5):
     pos[s[i]]=(RR(x*sin(2*pi*i/5)), RR(x*cos(2*pi*i/5)))
     pos[t[i]]=(RR(y*sin(2*pi*(i+1/2)/5)), RR(y*cos(2*pi*(i+1/2)/5)))
 pos['k']=(0,0)
 M.show(pos_method=1, pos_dict=pos)
 }}}

 This gives a star-like object. The input is clearly centered at (0,0) and
 has rotational symmetry.

 - The output of show() is flattenened (on my screen) and there is some
 empty space above the image.
 - If you show the output generated by plot(), then there is no flattening,
 but the some of the dots representing the groundset elements are cut by
 the boundary of the image.

 So I wonder, could you perhaps get rid of the flattening in show()? The
 behaviour of the boundary is another thing. The minimal solution is to
 simply state the position of the windowframe in the docstring, and leave
 it to the user to accomodate. A more advanced solution is auto-framing the
 given picture, but then you should somehow make sure that all the dots and
 curves fall completely within the frame.

 Finally, one more request. I see that the point positioning of M in the
 above example is cached, so that if I just do M.show() again I get the
 same nice picture. Could you create a command M._fix_positions(pos_dict)
 which will likewise fix the point positions, but without showing or
 plotting the matroid? I guess I could call M.plot() with a user point
 positioning once and ignore the output to that effect, but I'm fairly sure
 you can get the same result without calling all the plot routines. I want
 to fit the named_matroids of rank <=3 with a nice default point
 positioning, so I could use a command like that.

--
Ticket URL: <http://trac.sagemath.org/ticket/16449#comment:12>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to