#python #altair
#python #altair
Вопрос:
Я пытаюсь отобразить ось времени на графике временных рядов altair в виде локализованных месяцев. Я установил localed в соответствующий код, но october по-прежнему отображается как oct, а не как Okt.
import altair as alt
import pandas as pd
import locale
from altair_saver import save
file = '.lagebericht.csv'
df = pd.read_csv(file, sep=';')
source = df
locale.setlocale(locale.LC_ALL, "de_CH")
base = alt.Chart(source, title='Neumeldungen BS').encode(
alt.X('test_datum:T', axis=alt.Axis(title="",format="%b %y"))
)
bar = base.mark_bar(width = 1).encode(
alt.Y('faelle_bs:Q', axis=alt.Axis(title="Anzahl Fälle"))
)
line = base.mark_line(color='blue').encode(
y='faelle_Total:Q')
chart1 = (bar line).properties(width=600)
base = alt.Chart(source, title='Meldungen kumulativ BS').encode(
alt.X('test_datum:T', axis=alt.Axis(title="",format="%b %y"))
)
line = base.mark_line(color='blue').encode(
alt.Y('faelle_bs_kum:Q', axis=alt.Axis(title="Anzahl Fälle"))
)
chart2 = (line).properties(width=600)
save(chart1 amp; chart2, r"imagesfigs.html")
Ответ №1:
Altair соединяет Python и javascript; когда вы используете locale
пакет Python, это влияет только на языковой стандарт в Python. Что вам нужно сделать, так это изменить язык отображения javascript. Вы можете сделать это с помощью средства визуализации embedOptions
, используя formatLocale
(см. https://github.com/d3/d3-format/tree/master/locale ) и timeFormatLocale
(см. https://github.com/d3/d3-time-format/tree/master/locale )
Вот как вы можете установить DE locale для рендеринга Altair, используя настройки локали, доступные по этим ссылкам:
import altair as alt
from urllib import request
import json
# fetch amp; enable a German format amp; timeFormat locales.
with request.urlopen('https://raw.githubusercontent.com/d3/d3-format/master/locale/de-DE.json') as f:
de_format = json.load(f)
with request.urlopen('https://raw.githubusercontent.com/d3/d3-time-format/master/locale/de-DE.json') as f:
de_time_format = json.load(f)
alt.renderers.set_embed_options(formatLocale=de_format, timeFormatLocale=de_time_format)