散景 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
    '''
)

xy 的不同集合的输出如下所示

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 瑞士法郎的主要内容,如果未能解决你的问题,请参考以下文章

带有 `import bokeh` 的烧瓶,带有 2 个没有外部散景服务器的散景图,而不是“模型只能由一个文档拥有”

散景小部件不更新情节

散景自定义保存工具

Django中的散景图返回空白页

散景内联嵌入,“加载资源失败”

如何为控制多个散景图形添加一个图例?