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.

Reply via email to