[Scilab-Dev] new logflags syntax of plot() in 6.1

Stéphane Mottelet stephane.mottelet at utc.fr
Wed Jun 3 13:31:51 CEST 2020


Hi,

Le 03/06/2020 à 13:01, Samuel Gougeon a écrit :
> Dear Stéphane,
>
> This thread was on Bugzilla for more than 4 years, and the commit was 
> on review for a full year.
>
> This feature is completely back-compatible. It breaks nothing.
> About any "spirit" : The only one that i know -- and it has always 
> been very explicit -- is to improve Scilab by all possible and 
> relevant ways.
> IMHO in no way considering Scilab as a museum of features coming from 
> anywhere else, or even internal, as in a showcase preventing any 
> forthcoming changes -- could be considered as a way for improving Scilab.
>
> The new "logflags" argument is actually badly named in the 
> documentation. It must rather be seen as the initial implementation of 
> a more extended "AxesSpec" argument,
That's where we definitively do not agree. To me, specification of Axes 
properties should not be given as _explicit_ arguments to plot(), which 
accepts polyline properties.
> as  "LineSpec" already exists and makes plot() much more handy than 
> plot2d(). Simply, to me, the priority was to transfer the plot2d() log 
> feature to plot(), as a first step. Indeed, it was the only feature 
> missing to plot() that somewhat made me sticking to plot2d().
> plot() can still be improved in many ways, without breaking anything. 
> Just about this axesSpec (a report should be posted), here are some 
> ideas to go on designing it:
>
>   * allowing to switch the direction of each axis, by using the "-" symbol
>   * allowing to set the position, by using a "r", "t", or "c" symbol
>     (for Right, Top, Center)
>   * allowing to set the grid (for instance with the "_" symbol)
>   * allowing to set the legend (for instance as last field, after the
>     first @ symbol, since this one is already used in the legacy "leg"
>     option)
>   * .. for instance using "|" as axis separator (that then could not
>     be used in legends)
>
Sorry, but using a complicated multi-character string would be a 
regression compared to setting correctly documented properties of Axes 
(before or afterwards). The time where we could only use one 
(complicated) string to speficity many stuff has gone...


>  *
>
>
>
> IMHO, may be it's the right time to announce the deprecation of 
> plot2d() in its documentation, to make it an internal in Scilab 6.2 or 
> 6.3.
>
> You seem to fear other plot2d() extra  options. As you, i would not 
> regret strf and nax ones, whose names and encoding are very criptic, 
> and just impossible to remember. There were likely designed before 
> graphical properties were implemented to address them in a detailed way.
>
> About plot() Global properties:
> They are dedicated to polylines, not to axes. So adding any axes 
> properties to them would break the idea, indeed. Yet, AFAIU still some 
> polyline setting can't be tuned through LineSpec nor a Global 
> property, like the curve's thickness. It's a pity. We could think 
> about improving this.
>
Yes.
>
> On the other hand, Global Properties are less useful now than 
> formerly, for 2 main reasons:
>
>   * set() is now vectorized: It now allows to set several properties
>     in a single call. This is a quite recent feature (added in ~6.0.1).
>   * Assigning a given property for a vectors of handles (as a group of
>     polylines) has been a lot of improved in 6.0.2
>
> This recent double vectorization makes complex assignements of (scalar 
> or non scalar) values to vectors of polylines handles much easier, and 
> in a more extensive way than only through Global properties.
>
> About any semilogx, semilogy, loglog functions:
> When in 2D 3 functions can be simply replaced with 3 understandable 
> values of a single option in an existing function, that just tells 
> that they are completely useless.
> Who would tell that in 3D we would have to create 7 separate functions 
> to deal with all x/y/z log/normal possible combinations? So why doing 
> it in 2D?
> And why only for the log status? Then, in the same way, why not 
> creating some invXplot(), invYplot(), invXYplot(), to directly plot 
> inverted axes, and so, of course, invSemilogX(), etc..?
Haha, I like your sense of humor...
> To me, all this is just meaningless.
> Now, if former matlabers wish to still use their prefered former 
> functions, of course adding them in an external compatibility toolbox 
> is possible, as you did in plotlib.
> By the way, similar functions already exist in Scilab, as 
> mtlb_semilogx, mtlb_semilogy, mtlb_loglog, in the m2sci module.
>
> We can't on one hand make strong efforts to remove all existing 
> duplicates or uselessly split features, and on the other one make 
> strong efforts to build new ones as somewhat strange and absurd ones 
> that already exist.
> At least, if so, personnally i would not go on about any cleaning and 
> clarifying task in Scilab.
>
> This is why, to me, the introduced AxesSpec feature is great, clear, 
> fully enabled, and already complete for log/lin tuning at calling time.
> While i am sorry to still not understanding your point.

So do I...

S.

>
> Best regards
> Samuel
>
>
> Le 13/03/2020 à 11:18, Stéphane Mottelet a écrit :
>> Hi,
>>
>> I don't approve this commit 
>> (https://codereview.scilab.org/#/c/20879/8) which was merged just 
>> before the release (I didn't even have the time to give it a -1). It 
>> represents a complete breakdown with the spirit of "plot", whose help 
>> page says "plot has been rebuild to better handle Matlab syntax. To 
>> improve graphical compatibility, Matlab users should use plot (rather 
>> than plot2d)". Until now, the behavior of plot was customized by 
>> means of "propertyName/value" pairs given after the (x,y) pairs.
>>
>> With this new logflags syntax, we have an optionnal first argument of 
>> "value" type without its "propertyName", moreover this is a "value" 
>> of an Axes property. At worse, but it would not have been more 
>> coherent, the expected feature could have been implemented as a pair 
>> "log_flags",string among other "propertyName/value".
>>
>> plot() had the merit of being more user friendly that plot2d(). With 
>> this commit, it started its convergence towards plot2d(), which is 
>> not a reference of user friendliness. One implicit rule is: when we 
>> introduce functions with Matlab's functions names and trying to 
>> emulate some of its features, then the Scilab function has to respect 
>> the subset of the Matlab API it implements and not mix with custom 
>> Scilab syntax. There are plenty of such functions in Scilab and this 
>> is a pity. We have implemented plot(), mesh(), surf(), light() and 
>> instead of breaking plot() to allow logarithmic plots it would have 
>> been simpler to emulate the corresponding functions in Matlab, 
>> namely, semilogx(), semilogy(), loglog(). So I hope that this commit 
>> will be quickly reverted in favor of 
>> https://codereview.scilab.org/#/c/21436/, in order to prevent bad 
>> habits of average users who could start using the logflags syntax.
>>
>> S.
>>
>
>
> _______________________________________________
> dev mailing list
> dev at lists.scilab.org
> https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/dev

-- 
Stéphane Mottelet
Ingénieur de recherche
EA 4297 Transformations Intégrées de la Matière Renouvelable
Département Génie des Procédés Industriels
Sorbonne Universités - Université de Technologie de Compiègne
CS 60319, 60203 Compiègne cedex
Tel : +33(0)344234688
http://www.utc.fr/~mottelet

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/dev/attachments/20200603/65e3359d/attachment.htm>


More information about the dev mailing list