bugGNU Octave - Bugs: bug #56731, gnuplot uses multiplot mode (qt...

 
 

bug #56731: gnuplot uses multiplot mode (qt driver) by default in GUI but chooses a driver without multiplot in CLI

Submitter:  Petr Mikulik <mikulik>
Submitted:  Thu 08 Aug 2019 09:41:35 AM UTC
   
 
Category:  Plotting with gnuplot Severity:  2 - Minor
Priority:  3 - Low Item Group:  Other
Status:  Invalid / Not an Octave Bug Assigned to:  None
Originator Name:  Open/Closed:  * Closed
Release:  * 5.1.0 Operating System:  * GNU/Linux
Fixed Release:  None Planned Release:  None
* Mandatory Fields

Add a New Comment Rich Markup
   

Jump to the original submission

Thu 22 Aug 2019 03:03:54 PM UTC, comment #6: 

Well, I reported this issue to figure out whether this unclosed multiplot is a bug or not. Now I see that it is an internal way how to plot correctly using all gnuplot terminals (in this case qt).

I figured it out when using an older script for a special histogram plot which sends gnuplot commands to the drawing stream directly. Sending "unset multiplot" does not hurt.

This feature is not seen during a standard use of Octave.

Thus, it is not a bug and this request can be closed.

Petr Mikulik <mikulik>
Wed 21 Aug 2019 07:21:22 PM UTC, comment #5: 

I don't know.  That was my last question as well.  Is there any example where the displayed or printed output is different based on this setting (and not the gnuplot terminal setting which will create a difference)?

Rik <rik5>
Group administrator
Wed 21 Aug 2019 06:08:14 PM UTC, comment #4: 

Yeah, my point is from the point of view of a user who doesn't use gnuplot directly, who only uses Octave drawing and plotting functions, is there any bug caused by this difference?

Mike Miller <mtmiller>
Group Member
Wed 21 Aug 2019 02:52:43 AM UTC, comment #3: 

I suppose the issue is that this option is not configurable.  If the user chooses a particular terminal that Octave considers buggy then it will unset multiplot mode to prevent flicker.  There is no override by the user.

On the other hand, if there is no example where the displayed or printed output is different then who cares?

Rik <rik5>
Group administrator
Tue 20 Aug 2019 08:11:43 PM UTC, comment #2: 

Does the use of multiplot mode or not affect any Octave drawing functions? Or does this only affect users who know how to use gnuplot directly?

From what I've read and understand here so far, this is not a bug, but simply a default configuration that the user ultimately has the option to override if needed.

Mike Miller <mtmiller>
Group Member
Thu 08 Aug 2019 03:54:51 PM UTC, comment #1: 

The issue is that some of the gnuplot backends don't work as well as others.  See this code in _gnuplot_drawnow_.m


  ## Work around the gnuplot feature of growing the x11 window and
  ## flickering window (x11, windows, & wxt) when the mouse and
  ## multiplot are set in gnuplot.
  fputs (plot_stream, "unset multiplot;\n");
  flickering_terms = {"x11", "windows", "wxt", "dumb"};
  if (! any (strcmp (term, flickering_terms))
      || have_non_legend_axes (h)
      || numel (findall (h, "type", "image")) > 0)
    fprintf (plot_stream, "%s\n", term_str);
    if (nargin == 5)
      if (! isempty (file))
        fprintf (plot_stream, "set output '%s';\n", file);
      endif
    endif
    fputs (plot_stream, "set multiplot;\n");
  elseif (any (strcmp (term, flickering_terms)))
    fprintf (plot_stream, "%s\n", term_str);
    if (nargin == 5)
      if (! isempty (file))
        fprintf (plot_stream, "set output '%s';\n", file);
      endif
    endif
  endif
  if (! __gnuplot_has_feature__ ("dashtype"))
    fprintf (plot_stream, "set termoption dashed\n");
  endif
else
  ## gnuplot will pick up the GNUTERM environment variable itself
  ## so no need to set the terminal type if not also setting the
  ## figure title, enhanced mode, or position.
endif


Try setting the environment variable GNUTERM to your desired backend before starting either the CLI or GUI version of Octave.  If you choose the qt backend you will find that multiplot is set in the CLI as well.  Sample session


~/wip/Projects_Mine/octave-stable: setenv GNUTERM qt
~/wip/Projects_Mine/octave-stable: octave-5.1.0 -f -q --no-gui

octave:1> graphics_toolkit gnuplot
octave:2> f = gcf();
octave:3> drawnow();
octave:4> stream = get(f, '__plot_stream__');
octave:5> fprintf(stream, 'show multiplot;\n');
octave:6> fflush(stream);
octave:7> multiplot mode is on



Rik <rik5>
Group administrator
Thu 08 Aug 2019 09:41:35 AM UTC, original submission:  

When gnuplot is selected as the graphics toolkit, then gnuplot is set to multiplot mode in GUI-Octave while to normal non-multiplot mode in CLI-Octave. Thus some drawing scripts relying on gnuplot work well in CLI-Octave while they are broken in the GUI-Octave. I think the multiplot mode should be off in both cases.

Example:

graphics_toolkit gnuplot
graw('show multiplot;\n');


When running Octave as "octave" or "octave-cli", then it shows

    multiplot mode is off

while "octave --gui" shows

    multiplot mode is on



Example code with graw() expanded:

graphics_toolkit gnuplot
f = gcf();
drawnow();
stream = get(f, '__plot_stream__');
fprintf(stream, 'show multiplot;\n');
fflush(stream);



Petr Mikulik <mikulik>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by rik5 (Posted a comment)
  • -email is unavailable- added by mikulik (Submitted the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only group members can vote.

     

    Follow 7 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2019-08-22 rik5 StatusNeed Info Invalid / Not an Octave Bug
        Open/ClosedOpen Closed
    2019-08-20 mtmiller StatusNone Need Info
    2019-08-08 rik5 Severity3 - Normal 2 - Minor
        Priority5 - Normal 3 - Low
        Item GroupRegression Other
        Summarygnuplot set to multiplot mode in GUI Octave gnuplot uses multiplot mode (qt driver) by default in GUI but chooses a driver without multiplot in CLI

    Back to the top

    Powered by Savane 3.13-4448.
    Corresponding source code