是否可以格式化箱线图工具提示中的值?从这个Vega 文档来看,似乎是这样,但我不太清楚如何使用 Altair for python 来做到这一点
from vega_datasets import data
import altair as alt
source = data.population.url
alt.Chart(source).mark_boxplot().encode(
alt.X("age:O"),
alt.Y("people:Q"),
tooltip=[
alt.Tooltip("people:Q", format=",.2f"),
],
)
Run Code Online (Sandbox Code Playgroud)
joe*_*lom 12
我相信您需要为复合标记提供聚合,例如mark_boxplot. 这有效:
from vega_datasets import data
import altair as alt
source = data.population.url
alt.Chart(source).mark_boxplot().encode(
alt.X("age:O"),
alt.Y("people:Q"),
tooltip=alt.Tooltip("mean(people):Q", format=",.2f"),)
Run Code Online (Sandbox Code Playgroud)
更新:由于目前不可能将多个聚合工具提示添加到 boxplot 中,因此我将我的答案与How to change Altair boxplot infobox to displaymeanratherthmedian?结合起来。将带有自定义工具提示的透明框放在箱线图的顶部。我仍然保留了下面的箱线图,以便将异常值和晶须绘制为 Tukey 箱线图而不是最小值-最大值。我还为平均值添加了一个点,因为这是我想在工具提示中看到的内容:
from vega_datasets import data
import altair as alt
source = data.population.url
alt.Chart(source).mark_boxplot().encode(
alt.X("age:O"),
alt.Y("people:Q"),
tooltip=alt.Tooltip("mean(people):Q", format=",.2f"),)
Run Code Online (Sandbox Code Playgroud)
小智 5
有一种方法可以向工具提示添加多列。您可以将方括号中的多列作为列表传递。
import altair as alt
from vega_datasets import data
stocks = data.stocks()
alt.Chart(stocks).mark_point().transform_window(
previous_price = 'lag(price)'
).transform_calculate(
pct_change = '(datum.price - datum.previous_price) / datum.previous_price'
).encode(
x='date',
y='price',
color='symbol',
tooltip=[ 'price', 'symbol', alt.Tooltip('pct_change:Q', format='.1%')]
)
Run Code Online (Sandbox Code Playgroud)