pythonbokehhvplotholoviz

How to disable scientific notation in hvPlot plots?


I have just started using hvPlot today, as part of Panel.

I am having a difficult time figuring out how to disable scientific notation in my plots. For example here is a simple bar plot. The axis and the tootltip are in scientific notation. How can I change the format to a simple int?

enter image description here

I am showing this to non numerical and non techy management. They would rather see just basic integers and I don’t want to have to explain to them what scientific notation is.

I could not find anything in the docs to help me: https://hvplot.holoviz.org/user_guide/Customization.html

I’ve also tried to cobble together suggestions from Bokeh docs.

I can’t figure it out. Please help! Thanks

My simple df:

   local_date      amount
0      Jan 19   506124.98
1      Feb 19   536687.28
2      Mar 19   652279.31
3      Apr 19   629440.06
4      May 19   703527.00
5      Jun 19   724234.08
6      Jul 19   733413.32
7      Aug 19   758647.44
8      Sep 19   782676.16
9      Oct 19   833674.28
10     Nov 19   864649.74
11     Dec 19   849920.47
12     Jan 20   857732.52
13     Feb 20   927399.50
14     Mar 20  1152440.49
15     Apr 20  1285779.35
16     May 20  1431744.76
17     Jun 20  1351893.95
18     Jul 20  1325507.38
19     Aug 20  1299528.81

And code:

df.hvplot.bar(height=500,width=1000)

Solution

  • You can specify the formatter you would like to use in either x- or y-axis ticks, as such:

    df.hvplot.bar(height=500,width=1000, yformatter='%.0f')
    

    According to the Customization page you also referenced, the xformatter and yformatter arguments can accept "printf formatter, e.g. '%.3f', and bokeh TickFormatter". So, another way to do it is by passing a custom formatter from boken.models.formatters and customize it as such (Note: there's many other formatters you can also explore). For example:

    from bokeh.models.formatters import BasicTickFormatter
    df.hvplot.bar(height=500,width=1000, yformatter=BasicTickFormatter(use_scientific=False))
    

    Both should give you a result like this: enter image description here

    Now, editing the hover tooltip format is a bit tricker. One way to do it is to assign the figure object as custom HoverTool, in the following fashion:

    from bokeh.models import HoverTool
    hover = HoverTool(tooltips=[("amount", "@amount{0,0}"), ("local_date", "@local_date")]) 
    df.hvplot.bar(height=500, width=1000, yformatter='%.0f', use_index=False).opts(tools=[hover])
    

    You can find more details on how to configure a custom HoverTool here.