我已经在绘图中插入了一个数据集,以便绘制时间序列图。 Plotly 将其充分转换为日期时间对象,但显示是英语,我需要它是西类牙语。我可以这样做吗?怎么办?
代码如下:
trace1 = Scatter(
x=['2015-01-01', '2015-01-02'],
y=['14.7414', '14.7414'],
name='Precio del dlar',
error_y=ErrorY(
color='rgb(0,116,217)',
thickness=1, width=1
),
error_x=ErrorX(
copy_ystyle=True
),
marker=Marker(
color='rgb(0,116,217)',
size=8,
symbol='circle'
),
line=Line(
color='rgb(0,116,217)',
width=2
),
xsrc='rafaeles:2294:78082d',
ysrc='rafaeles:2294:7b41b5'
)
我插入的日期格式是x。计划将其编码为 1 月 15 日,但我需要使用西类牙语。
最佳答案
这是一个老问题,但也许对于与拉斐尔和我有同样问题的人来说可能有用。我遇到了这个问题,我向 Plotly 社区询问 how I can change the date language答案非常有帮助。
请注意,我编辑了您的问题,将您的代码插入到代码块中,以方便阅读。
首先尝试使用 Python 的 locale
模块检查当前的语言环境设置:
import locale
locale.getlocale()
如果您得到的内容与您想要使用的不同,您可以使用 locale.setlocale()
设置您想要的日期和时间。例如:
locale.setlocale(locale.LC_TIME, 'es_ES')
您可以使用 datetime
模块来测试这个新的语言环境是否正常工作,如下所示:
import datetime
today = datetime.datetime.now()
datetime.datetime(2020, 2, 14, 10, 33, 56, 487228)
today.strftime('%A %d de %B, %Y')
'viernes 14 de febrero, 2020'
然后您可以尝试使用 datetime
和 strftime
重新格式化数据。在您的情况下,它可能类似于:
dates = [datetime.datetime(2015, 1, 1).strftime('%A %d de %B, %Y'),
datetime.datetime(2015, 1, 2).strftime('%A %d de %B, %Y')]
这对我在 iPython 上有效:
In [1]: import locale
In [2]: locale.setlocale(locale.LC_TIME, "es_ES.utf8")
Out[2]: 'es_ES.utf8'
In [3]: import datetime
In [4]: dates = [datetime.datetime(2015, 1, 1).strftime('%A %d de %B, %Y'),
...: datetime.datetime(2015, 1, 2).strftime('%A %d de %B, %Y')]
In [5]: dates
Out[5]: ['jueves 01 de enero, 2015', 'viernes 02 de enero, 2015']
如果你想在x
轴上使用它,你可以在x
内部调用dates
:
trace1 = Scatter(
x=dates,
y=['14.7414', '14.7414'],
...
)
这对我有用!我希望它也适合您。
如果您需要不同的日期格式,我建议您阅读documentation about date-time microformats of D3 。我还建议您阅读主题How to change date language?我打开了 Plotly 社区论坛,因为答案非常有用,并且帮助我解决了我的问题并回答了这个问题。您还可以查看this notebook在线程中共享,其中回答我的一位用户展示了如果您使用 pandas
数据框如何解决问题。
请原谅我链接的很多内容,但阅读 methods to update axis 也可能非常有用。在 Plotly 文档中,因为您可以使用以下方式更新所需轴的格式:
fig.update_xaxes(tickformat='%d-%b-%Y')
我要感谢 Plotly 社区的用户 empet 和 eliasdabbas 的回答!
关于Python plotly : Dates in other languages,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32361113/