使用日期时间值格式化 x 轴,以西班牙语显示日期名称

问题描述 投票:0回答:2

我有一系列关于天气的数据。在这种情况下,只有 14 天的温度。

Plotly 在本地自动管理日期方面做得很好,但我无法更改日期的语言,并且使用

locale.setlocale(locale.LC_TIME, 'es_ES')
设置 python 区域设置不会影响 Plotly 的日期:

为了让它们以西班牙语出现,我必须用

datetime.strftime()
格式化每个日期时间,但随后将它们视为字符串,结果出现非常难看的东西:

此外,最后的数据密度较低,并且第二种方式(使用字符串)会破坏图表,因为它不知道日期之间的真实距离。

我也找不到像第一个示例那样将 X 轴标签居中的方法。

我想要这样的东西(我画的):

python datetime plotly axis-labels plotly-python
2个回答
2
投票

类似的问题已发布到plotly 社区,并提供了处理方法。我已将原始数据转换为 pandas 日期格式,然后更改区域设置。我也有不同的语言环境,所以我创建了一个代码来尝试一下。它以西班牙语正确显示。我想发布结果图,但有些文字是乱码,所以我不会发布图像。 x轴向侧面的刻度可以通过刻度的角度来设置,如代码所示。

import plotly.express as px
import pandas as pd
import numpy as np
from datetime import datetime
import locale

locale.setlocale(locale.LC_TIME, 'es_ES') 

df = pd.DataFrame({'date':pd.date_range('2021-09-01','2021-09-30'), 'value':np.random.randint(0,10,(30))})
es_date =  pd.to_datetime(df['date'])
es_date = [d.strftime('%d %A') for d in es_date]
df['es_date'] = es_date

fig = px.line(df[:10], x='es_date', y="value")

fig.update_xaxes(tickangle=0)
fig.show()

0
投票

我遇到了与您完全相同的问题,我需要用丹麦语绘制带有时间轴的数据。
从版本 5.14 开始,还可以使用

labelalias
属性来操作轴标签。根据Plotly文档,这应该可以解决您的情况(如果我假设您的数据位于DataFrame中
df
):

import plotly.express as px

fig = px.line(df, x="Fecha")
fig.update_xaxes(labelalias={"Tuesday 05": "Martes 05", "Wednesday 06": "Miércoles 06"})

fig.show()

我不会说西班牙语,所以我只是查了一下日期名称。我只输入了你们标签的前两个,但原则是添加所有必要的翻译。
一个很好的细节是,如果您在该词典中生成太多标签翻译也没关系;不必要的条目将保持未使用状态。当然,困难的工作可能在于生成所有相关的标签/翻译对。

© www.soinside.com 2019 - 2024. All rights reserved.