Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

[Bug]: Current locale not honored on Windows #25006

Open
@StefRe

Description

@StefRe

Bug summary

  1. Date formatting usingstrftime format codes should use thecurrent locale's names. While this works as expected on Linux,ConciseDateFormatter by default shows English month names etc. when running on a non-English locale. It only works correctly after explicitly setting the locale to the current one bylocale.setlocale(locale.LC_ALL, '').

  2. Settingaxes.formatter.use_locale toTrue doesn't have any effect on Windows unless you explicitly set the locale to the current one bylocale.setlocale(locale.LC_ALL, '') (again, it works correctly on Linux). I don't understand why this is so as__init__ does exactly the same thing but for some reason without effect on Windows:

    ifrcParams['axes.formatter.use_locale']:
    locale.setlocale(locale.LC_ALL,'')

Code for reproduction

importlocaleimportplatformimportmatplotlibasmplimportmatplotlib.pyplotaspltimportnumpyasnpdates=np.arange(np.datetime64('2022-12-01'),np.datetime64('2022-12-02'),np.timedelta64(1,'h'))values=np.zeros_like(dates,dtype=int)defplot(title):fig,ax=plt.subplots(figsize=(6,1.5),layout='constrained')ax.plot(dates,values,'white')ax.xaxis.set_major_formatter(mpl.dates.ConciseDateFormatter(mpl.dates.AutoDateLocator()))ax.text(.5,.5,f"{locale.getlocale()=}\n{ax.yaxis.get_major_formatter().get_useLocale()=}\n({platform.system()})",transform=ax.transAxes,ha='center',va='center')ax.set_title(title)fig.savefig(title+'.png')# use \N{MODIFIER LETTER COLON} instead of regular colon for Windows file namesplot('1꞉ default')withmpl.rc_context({'axes.formatter.use_locale':True}):plot('2꞉ axes.formatter.use_locale = True')locale.setlocale(locale.LC_ALL,'')plot("3꞉ setlocale(locale.LC_ALL, '')")withmpl.rc_context({'axes.formatter.use_locale':True}):plot("4꞉ axes.formatter.use_locale = True after setlocale(locale.LC_ALL, '')")

Actual outcome

On Windows:

1꞉default--> should be Dez instead of Dec

1꞉ default

2:axes.formatter.use_locale = True --> should be 0,00 instead of 0.00

2꞉ axes formatter use_locale = True

3: aftersetlocale(locale.LC_ALL, '') --> this works correctly

3꞉ setlocale(locale LC_ALL, '')

4:axes.formatter.use_locale = True aftersetlocale(locale.LC_ALL, '') --> this works correctly too

4꞉ axes formatter use_locale = True after setlocale(locale LC_ALL, '')

Expected outcome

On Linux

All four cases are correct. The expected outcome on Windows is the same as on Linux.

1꞉ default

2꞉ axes formatter use_locale = True

3꞉ setlocale(locale LC_ALL, '')

4꞉ axes formatter use_locale = True after setlocale(locale LC_ALL, '')

Additional information

The issue is only on Windows, everything is fine on Linux (can't test it on MacOS but I suppose it'd be the same as on Linux).

Operating system

Windows

Matplotlib Version

3.6.3

Matplotlib Backend

No response

Python version

3.10

Jupyter version

No response

Installation

conda

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions


      [8]ページ先頭

      ©2009-2025 Movatter.jp