I found it ! The problem is in use of SelectiveFormatter to get rid of 0 tick label if the axes cross. Commenting out lines
https://github.com/sagemath/sage/blob/develop/src/sage/plot/graphics.py#L2983 to https://github.com/sagemath/sage/blob/develop/src/sage/plot/graphics.py#L2986 from sage.plot.plot import SelectiveFormatter subplot.yaxis.set_major_formatter(SelectiveFormatter( subplot.yaxis.get_major_formatter(), skip_values=[0])) subplot.xaxis.set_major_formatter(SelectiveFormatter( subplot.xaxis.get_major_formatter(), skip_values=[0])) will bring back the scaling factor in scientific notation. But on the downside it will print the origin 0. SelectiveFormatter use itself has this issue. A modified version of usage example of SelectiveFormatter in Sage reference >> 2D Plotting from sage.plot.plot import SelectiveFormatter import matplotlib.pyplot as plt import numpy fig=plt.figure() ax=fig.add_subplot(111) t = numpy.arange(10000000, 10100000, 100) s = t p = ax.plot(t, s) formatter=SelectiveFormatter(ax.xaxis.get_major_formatter(),skip_values=[0,1]) formatter=SelectiveFormatter(ax.yaxis.get_major_formatter(),skip_values=[0,1]) ax.xaxis.set_major_formatter(formatter) ax.yaxis.set_major_formatter(formatter) show(p) Any idea to fix it? On Thursday, July 28, 2022 at 3:25:41 AM UTC+5:30 Niranjana K M wrote: > Regarding axes Formatter, inserting > rcParams['axes.formatter.use_mathtext'] = True > just after > from matplotlib import rcParams > in graphics.py makes the scientific notation to be typeset as x 10^7 > (for example). This looks nicer than 1e7. See the figure. Though it does > not solve the current problem, aesthetically it looks nice whenever the > scaling is displayed. > > [image: index.png] > > On Thursday, July 28, 2022 at 1:45:18 AM UTC+5:30 emanuel.c...@gmail.com > wrote: > >> Le mercredi 27 juillet 2022 à 16:53:39 UTC+2, niran…@gmail.com a écrit : >> >> Dear Kcrisman, >>> I will look into it *if* you promise me to *review* and *close* my >>> another ticket https://trac.sagemath.org/ticket/34038 >>> based on the thread >>> https://groups.google.com/g/sage-devel/c/tMH1RZNyC9s/m/DRwexGpzAwAJ >>> >> This ticket contains suggestion, is marked needs_review, but proposes no >> branch to review. Could you propose a patch implementing your suggestions ? >> The Developer’s guide >> <https://doc.sagemath.org/html/en/developer/index.html> will guide you >> on the road to proposing such a patch as a branch of the Sage source git >> tree… >> >> 😀 >>> >>> With regards >>> Niranjana >>> >>> On Wednesday, July 27, 2022 at 7:05:51 PM UTC+5:30 kcrisman wrote: >>> >>>> This is a good question, and one that has been around for a while in >>>> some form, unfortunately; see https://trac.sagemath.org/ticket/7964 >>>> for a related ticket. See https://trac.sagemath.org/ticket/30983 for >>>> a ticket that complains instead about something else but which is closely >>>> related. >>>> >>>> We would be grateful for any additional insight you might provide. >>>> Here are some pieces of info about where we use matplotlib that you might >>>> find useful in that regard. >>>> >>>> We use some specific matplotlib ticker and formatter options which >>>> don't always play well here. See >>>> https://github.com/sagemath/sage/blob/develop/src/sage/plot/graphics.py#L2326 >>>> >>>> for _matplotlib_tick_formatter in sage/plot/graphics.py >>>> >>>> In particular, note that, under ordinary circumstances, >>>> >>>> y_locator = MaxNLocator(**locator_options) >>>> y_formatter = ScalarFormatter() >>>> >>>> That is very close to the defaults for matplotlib, but maybe we are >>>> using things in an antiquated way. See e.g. >>>> https://matplotlib.org/stable/api/ticker_api.html#matplotlib.ticker.ScalarFormatter >>>> >>>> >>>> On the other hand, if (as I suspect) that isn't the root issue, it >>>> probably is in the save method ( >>>> https://github.com/sagemath/sage/blob/develop/src/sage/plot/graphics.py#L3198). >>>> >>>> My first thought was that somehow fig_tight played a role, but >>>> >>>> sage: plot(x^2,(x,0,5000),fig_tight=False) >>>> >>>> doesn't seem to be any different than the one you pointed out. Another >>>> possibility is tight_layout ( >>>> https://matplotlib.org/stable/api/tight_layout_api.html) which we do >>>> use, but which a little experimentation doesn't seem to indicate is the >>>> problem either. >>>> On Tuesday, July 26, 2022 at 5:15:11 AM UTC-4 niran...@gmail.com wrote: >>>> >>>>> Dear all, >>>>> "2D plotting" doc says, >>>>> "Another thing to be aware of with axis labeling is that when the >>>>> labels have quite different orders of magnitude or are very large, >>>>> scientific notation (the e notation for powers of ten) is used." >>>>> >>>>> But display of this multiplier power for the scaled y-axis is missing >>>>> if the plot starts with x=0 or at most will be missing till the x-axis >>>>> detaches from the origin. Following examples illustrates it, >>>>> >>>>> *sage:* plot(x^2,(x,0,5000)) # missing display of 1e7 above y-axis >>>>> *sage:* plot(x^2,(x,50,5000)) # missing display of 1e7 above y-axis >>>>> *sage:* plot(x^2,(x,100,5000)) # display of 1e7 above y-axis is >>>>> visible >>>>> >>>>> On the other side matplotlib natively always displays the scale >>>>> multiplier (if any) whenever numbers are large. For example: >>>>> >>>>> *sage:* import matplotlib.pyplot as plt >>>>> *sage:* import numpy as np >>>>> *sage:* z = np.linspace(0, 5000, 100) >>>>> *sage:* plt.plot(z, z**2) >>>>> *sage:* plt.show() >>>>> >>>>> My other plots involved electric field calculations which had >>>>> magnitudes around 1/epsilon_0 which is 1/(8.85E-12) =~ 10^11. For those >>>>> plots starting with x=0 the display of multiplier used for y-axis were >>>>> missing. >>>>> >>>>> With regards >>>>> Niranjana >>>>> >>>> >> > -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/6e5e0f90-ae9d-4d67-8ae6-7cb35f8430afn%40googlegroups.com.