Plotly - 图表中的圆形悬停小数

5 python plotly

您如何舍入数字以在绘图图中显示?我在下面包含了一个 MRE。本质上,我希望当用户将鼠标悬停在栏上时出现四舍五入的数字。

import plotly.express as px
import pandas as pd
df = pd.DataFrame({'num': [1, 2, 3],
                   'sqrt': pd.Series([1, 2, 3]) ** 0.5})
fig = px.bar(df, x='num', y='sqrt', title='Square root')
fig.show()
Run Code Online (Sandbox Code Playgroud)

Zee*_*eek 8

您可以通过以下两种方式执行此操作:

方法一:使用pd.series.round函数。

import plotly.express as px
import pandas as pd
df = pd.DataFrame({'num': [1, 2, 3],
                   'sqrt': (pd.Series([1, 2, 3]) ** 0.5).round(2)})
fig = px.bar(df, x='num', y='sqrt', title='Square root')
fig.show()
Run Code Online (Sandbox Code Playgroud)

方法 2:使用 python 内置round函数。为此,我将不得不使用list comprehension而不是pandas series. 由于系列不直接支持它。

import plotly.express as px
import pandas as pd
df = pd.DataFrame({'num': [1, 2, 3],
                   'sqrt': [round(x**(1/2),2) for x in [1,2,3]]})
fig = px.bar(df, x='num', y='sqrt', title='Square root')
fig.show()
Run Code Online (Sandbox Code Playgroud)

编辑

方法 3:正如@M 所回答的那样。Forsythe 下面你也可以使用hover_dataplotly 的参数来做到这一点。

import plotly.express as px
import pandas as pd
df = pd.DataFrame({'num': [1, 2, 3],
                   'sqrt': pd.Series([1, 2, 3]) ** 0.5})
fig = px.bar(df, x='num', y='sqrt', title='Square root',hover_data={'sqrt':':.2f'})
fig.show()
Run Code Online (Sandbox Code Playgroud)