Как поменять точки на запятые на осях в python - PullRequest
0 голосов
/ 27 февраля 2019

Я добавил к своему коду

import locale
locale.setlocale(locale.LC_NUMERIC, "de_DE")

plt.rcParams['axes.formatter.use_locale'] = True
import matplotlib.pyplot as plt
import numpy as np

, и он не работает locale.Error: unsupported locale setting

Я проверил, есть ли у меня de_DE в locale -a, и у меня нет:

cs_CZ.utf8
C.UTF-8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
id_ID.utf8
POSIX

В некоторых из них есть запятая по умолчанию?Я думал, что CZ, но нет, есть еще очки.Поэтому я попытался установить de_DE

cd /usr/share/locales
./install-language-pack de_DE

Однако, результат был

sed: dočasný soubor /etc/sed8Oob4Q nelze otevřít: Operace zamítnuta

, что означает, что операция была отклонена.

Запись вместо locale.setlocale(locale.LC_ALL, 'de_DE') locale.setlocale(locale.LC_ALL, 'de_DE.utf8') также не помогла.

Я попытался запустить в терминале

export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
sudo dpkg-reconfigure locales

Могу ли я выбрать de_DE как язык по умолчанию, хотяЯ использую другой язык?

Тогда я использовал export LC_ALL=C и ничего не произошло.У вас есть другие идеи, чтобы установить запятые в matplotlib вместо точек на осях?Спасибо

1 Ответ

0 голосов
/ 27 февраля 2019

Ваш код неверен, вы звоните plt.rcParams перед загрузкой matplotlib.

Этот код отлично работает:

import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['axes.formatter.use_locale'] = True
import locale

print(locale.getlocale()) # default locale, have to be None 
locale.setlocale(locale.LC_NUMERIC, "de") # 'de' for Win or 'de_DE' for linux/mac
print(locale.getlocale()) # test locale after setup
fig, axis = plt.subplots(2, 2)  
plt.show()

enter image description here

...