From: Mojca M. <moj...@gm...> - 2007-01-27 15:29:35
|
Hello, just a short question: how should a terminal properly set the bounding box of an image? I used to set it to (0,0) and (5in,3in), or whatever the graphic size was, but then I figured out that the image is now too big if one sets a smaller size ("set size .5" for example). I would like to set the image boundary only to the relevant part (in that case it would be (0,0) and (2.5in,1.5in)). How can I determine the bounds? I saw that "set size" sets "xsize" and "ysize" global variables, but then I also noticed the following: plot_bounds.xright = (xsize + xoffset) * t->xmax Should the graphic boundary obey "plot_bounds" or something else? (Once again, I'm not sure about multiplots and such.) Thanks a lot, Mojca Miklavec |
From: Ethan A M. <merritt@u.washington.edu> - 2007-01-27 17:43:21
|
On Saturday 27 January 2007 07:29, Mojca Miklavec wrote: > just a short question: how should a terminal properly set the bounding > box of an image? I don't think that question is well-defined. You may have to explain in more detail what you are asking. > I used to set it to (0,0) and (5in,3in), or whatever > the graphic size was, but then I figured out that the image is now too > big if one sets a smaller size ("set size .5" for example). Please define "graphic size" and "image size". These are not the terms that we have been using with regard to gnuplot, so I am not sure what you mean. > I would > like to set the image boundary only to the relevant part (in that case > it would be (0,0) and (2.5in,1.5in)). Please don't do that. We are trying to make the scale of the plot, controlled by "set size", and the size of the 'canvas' (which I think is what you mean by 'image' but I'm not sure), independent of each other. This section of the current docs tries to explain, but maybe you can suggest how to make the description more clear: gnuplot> help canvas In earlier versions of gnuplot, some terminal types used the values from `set size` to control also the size of the output canvas; others did not. The use of 'set size' for this purpose was deprecated in version 4.2. In version 4.3 almost all terminals now behave as follows: `set term <terminal_type> size <XX>, <YY>` controls the size of the output file, or "canvas". Please see individual terminal documentation for allowed values of the size parameters. By default, the plot will fill this canvas. `set size <XX>, <YY>` scales the plot itself relative to the size of the canvas. Scale values less than 1 will cause the plot to not fill the entire canvas. Scale values larger than 1 will cause only a portion of the plot to fit on the canvas. Please be aware that setting scale values larger than 1 may cause problems on some terminal types. The major exception to this convention is the PostScript driver, which by default continues to act as it has in earlier versions. Be warned that the next version of gnuplot may change the default behaviour of the PostScript driver as well. Example: set size 0.5, 0.5 set term png size 600, 400 set output "figure.png" plot "data" using lines These commands will produce an output file "figure.png" that is 600 pixels wide and 400 pixels tall. The plot will fill the lower left quarter of this canvas. This is consistent with the way multiplot mode has always worked, however it is a change in the way the png driver worked for single plots in version 4.0. > How can I determine the bounds? I saw that "set size" sets "xsize" and > "ysize" global variables, Those are the scaling factors set by "set size". > but then I also noticed the following: > plot_bounds.xright = (xsize + xoffset) * t->xmax plot_bounds was not intended for export to terminal drivers. It is used by the generic drawing routines like draw_clip_line() to perform terminal-independent clipping. > Should the graphic boundary obey "plot_bounds" or something else? > (Once again, I'm not sure about multiplots and such.) The individual terminal drivers are not supposed to know or care about this. It is the responsibility of the core routines to decide how to place things onto the canvas size reported by the current driver in term->xmax and term->ymax. > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys - and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > gnuplot-beta mailing list > gnu...@li... > https://lists.sourceforge.net/lists/listinfo/gnuplot-beta > -- Ethan A Merritt Biomolecular Structure Center University of Washington, Seattle 98195-7742 |
From: Mojca M. <moj...@gm...> - 2007-01-28 14:33:55
|
On 1/27/07, Ethan A Merritt wrote: > On Saturday 27 January 2007 07:29, Mojca Miklavec wrote: > > just a short question: how should a terminal properly set the bounding > > box of an image? > > I don't think that question is well-defined. You may have to explain > in more detail what you are asking. I'm sorry for not being clear enough, these are just different naming conventions. What I mean with "bounding box" (term used in eps figures for examples) is what you mean with canvas. You guessed it properly. > > I used to set it to (0,0) and (5in,3in), or whatever > > the graphic size was, but then I figured out that the image is now too > > big if one sets a smaller size ("set size .5" for example). > > Please define "graphic size" and "image size". These are not the > terms that we have been using with regard to gnuplot, so I am not > sure what you mean. Both refer to "canvas size". (I wasn't use to that term either.) > > I would > > like to set the image boundary only to the relevant part (in that case > > it would be (0,0) and (2.5in,1.5in)). > > Please don't do that. We are trying to make the scale of the plot, > controlled by "set size", and the size of the 'canvas' (which I think > is what you mean by 'image' but I'm not sure), independent of each other. > > This section of the current docs tries to explain, but maybe you can > suggest how to make the description more clear: (The description seems clear, but I didn't pay enough attention to it. I also didn't know that it's called canvas.) > gnuplot> help canvas > > In earlier versions of gnuplot, some terminal types used the values from > `set size` to control also the size of the output canvas; others did not. > The use of 'set size' for this purpose was deprecated in version 4.2. > In version 4.3 almost all terminals now behave as follows: > > `set term <terminal_type> size <XX>, <YY>` controls the size of the output > file, or "canvas". Please see individual terminal documentation for allowed > values of the size parameters. By default, the plot will fill this canvas. > > `set size <XX>, <YY>` scales the plot itself relative to the size of the > canvas. Scale values less than 1 will cause the plot to not fill the entire > canvas. Scale values larger than 1 will cause only a portion of the plot to > fit on the canvas. Please be aware that setting scale values larger than 1 > may cause problems on some terminal types. > > The major exception to this convention is the PostScript driver, which > by default continues to act as it has in earlier versions. Be warned that > the next version of gnuplot may change the default behaviour of the > PostScript driver as well. > Example: > set size 0.5, 0.5 > set term png size 600, 400 > set output "figure.png" > plot "data" using lines > > These commands will produce an output file "figure.png" that is 600 pixels > wide and 400 pixels tall. The plot will fill the lower left quarter of this > canvas. This is consistent with the way multiplot mode has always worked, > however it is a change in the way the png driver worked for single plots in > version 4.0. I'm sorry, I have to read the documentation more carefully next time before asking something. This is how my terminal already works, but I thought that it needs to be fixed. So, I thought that for the example above I should create an image of 300x200 pixels (leaving so much blank space in the border seemed somehow nonsense to me). The terminal also supports "set size" syntax, but I cannot use it in the middle of the document, because if I want to change the size with "set context size 0.5,0.5", then the terminal is reset (which could be expressed as \end{document}\begin{document}" in LaTeX dialect), so it's useless. But that's OK - in most cases one creates single plots anyway. > The individual terminal drivers are not supposed to know or care about > this. It is the responsibility of the core routines to decide how to > place things onto the canvas size reported by the current driver in > term->xmax and term->ymax. OK. So there's nothing more to care about. Thanks a lot, Mojca |