Altair - 如何使用数据来格式化工具提示
Altair - how to use datum to format a tooltip
我正在尝试使用数据格式化工具提示,但到目前为止,没有任何成功。
我需要的工具提示类似于“INV:174,000.00”。我该怎么做?
这是我应该使用数据的地方:
text = line.mark_text(align='right', dx=-10, dy=-10).encode(
text=alt.condition(nearest, f'Revenue:Q', alt.value(' '))
).transform_calculate(label='"INV: " + datum.Revenue')
完整代码:
import altair as alt
from altair import datum
import pandas as pd
import numpy as np
import os
def areaChart():
df = {
'Stat': ['INV'],
'Revenue': [474147.84, 2170326.05, 2184077.88, 3957965.97]
}
source = pd.DataFrame(np.cumsum(df, 0),
columns='Revenue', index=pd.RangeIndex(len(df['Stat']), name='Revenue'))
print(source)
source = source.reset_index().melt('Revenue', var_name='Analyzing', value_name='Revenue')
nearest = alt.selection(type='single', nearest=True, on='mouseover',
fields=['Revenue'], empty='none')
line = alt.Chart(source).mark_area(opacity=0.60).encode(
x=alt.X(f'Stat:Q', axis=alt.AxisConfig()),
y=f'Revenue:Q',
color='Analyzing:N'
)
selectors = alt.Chart(source).mark_point().encode(
x=f'Stat:Q',
opacity=alt.value(0),
).add_selection(
nearest
)
points = line.mark_point().encode(
opacity=alt.condition(nearest, alt.value(1), alt.value(0))
).properties(
title=f'Stat x INV'
)
text = line.mark_text(align='right', dx=-10, dy=-10).encode(
text=alt.condition(nearest, f'Revenue:Q', alt.value(' '))
).transform_calculate(label='"INV: " + datum.Revenue')
rules = alt.Chart(source).mark_rule(color='black', size=0.70).encode(
x=f'Stat:Q',
).transform_filter(
nearest
)
chart = alt.layer(
line, selectors, points, rules, text
)
return chart
您似乎在计算标签,但实际上从未在编码中使用它。试试这个:
text = line.mark_text(align='right', dx=-10, dy=-10).encode(
text=alt.condition(nearest, 'label:N', alt.value(' '))
).transform_calculate(label='"INV: " + datum.Revenue')
我正在尝试使用数据格式化工具提示,但到目前为止,没有任何成功。 我需要的工具提示类似于“INV:174,000.00”。我该怎么做?
这是我应该使用数据的地方:
text = line.mark_text(align='right', dx=-10, dy=-10).encode(
text=alt.condition(nearest, f'Revenue:Q', alt.value(' '))
).transform_calculate(label='"INV: " + datum.Revenue')
完整代码:
import altair as alt
from altair import datum
import pandas as pd
import numpy as np
import os
def areaChart():
df = {
'Stat': ['INV'],
'Revenue': [474147.84, 2170326.05, 2184077.88, 3957965.97]
}
source = pd.DataFrame(np.cumsum(df, 0),
columns='Revenue', index=pd.RangeIndex(len(df['Stat']), name='Revenue'))
print(source)
source = source.reset_index().melt('Revenue', var_name='Analyzing', value_name='Revenue')
nearest = alt.selection(type='single', nearest=True, on='mouseover',
fields=['Revenue'], empty='none')
line = alt.Chart(source).mark_area(opacity=0.60).encode(
x=alt.X(f'Stat:Q', axis=alt.AxisConfig()),
y=f'Revenue:Q',
color='Analyzing:N'
)
selectors = alt.Chart(source).mark_point().encode(
x=f'Stat:Q',
opacity=alt.value(0),
).add_selection(
nearest
)
points = line.mark_point().encode(
opacity=alt.condition(nearest, alt.value(1), alt.value(0))
).properties(
title=f'Stat x INV'
)
text = line.mark_text(align='right', dx=-10, dy=-10).encode(
text=alt.condition(nearest, f'Revenue:Q', alt.value(' '))
).transform_calculate(label='"INV: " + datum.Revenue')
rules = alt.Chart(source).mark_rule(color='black', size=0.70).encode(
x=f'Stat:Q',
).transform_filter(
nearest
)
chart = alt.layer(
line, selectors, points, rules, text
)
return chart
您似乎在计算标签,但实际上从未在编码中使用它。试试这个:
text = line.mark_text(align='right', dx=-10, dy=-10).encode(
text=alt.condition(nearest, 'label:N', alt.value(' '))
).transform_calculate(label='"INV: " + datum.Revenue')