散景 NumerFormatter 瑞士法郎
Posted
技术标签:
【中文标题】散景 NumerFormatter 瑞士法郎【英文标题】:Bokeh NumerFormatter Swiss Francs 【发布时间】:2021-06-17 07:20:35 【问题描述】:我目前正在开发一个带有 Bokeh 的 Web 应用程序,其中包含一张瑞士法郎值表。我不知道如何按照以下样式格式化数字
1'000'000
所以用破折号代替逗号作为 1000 分隔符。向下查看文档 Bokeh 似乎仅限于此处给出的选项
https://docs.bokeh.org/en/latest/docs/reference/models/widgets.tables.html?highlight=numberfor#bokeh.models.widgets.tables.NumberFormatter
但 numbro 文档似乎暗示它还有更多内容。
http://numbrojs.com/format.html
我仍然找不到“de-CH”选项或类似的东西,即使我找到了,我也不知道如何在散景中将其移交。有人有经验吗?
最好的问候。
【问题讨论】:
如果您的数字是固定的,您可以使用this solution 将所有数字转换为字符串并将其作为额外列存储在您的数据/数据框中,并使用该列显示数字。 谢谢,这确实是我没有想到的可行解决方法!但是,当然,能够设置所需的格式就很好了!如果没有其他问题,我很乐意尝试您的解决方案。谢谢! 【参考方案1】:Bokeh 让您可以选择使用FuncTickFormatter
定义自己的刻度格式器。有了它,您可以在 javascript 中定义自己的规则。
您可以在下面看到调整规则的示例。
from bokeh.plotting import figure, output_notebook, show
from bokeh.models import FuncTickFormatter
output_notebook()
# create a new plot with the toolbar below
p = figure(plot_width=400, plot_height=400,
title=None, toolbar_location="below", )
x = [1e3, 3e3, 5e3, 1e4, 3e4]
y = [2, 5, 8, 2, 7]
p.circle(x, y, size=10)
p.xaxis.formatter = FuncTickFormatter(code=
'''
var num = tick.toFixed(2).toString()
var splitted = num.split(".")
for (var i=splitted[0].length-3; 0<i; i+=-3)
num = num.slice(0,i)+"'"+num.slice(i)
return num
'''
)
x
和 y
的不同集合的输出如下所示
Ticks < 30k | Ticks 2e6<1e7 |
---|---|
x = [1e3, 3e3, 5e3, 1e4, 3e4] |
x = [1e6, 5e6, 9e6] |
y = [2, 5, 8, 2, 7] |
y = [2, 8, 2] |
【讨论】:
以上是关于散景 NumerFormatter 瑞士法郎的主要内容,如果未能解决你的问题,请参考以下文章