此处的官方网站提供了一个在Altair中设置条形图标签的示例:https://altair-viz.github.io/gallery/bar_chart_with_labels.html
但是,一旦您希望在条形图中将“ color”参数设置为变量,则标签颜色将自动与条形颜色匹配,如下所示。但是,我的目的是使标签颜色始终保持不变,就像一直保持黑色。如果要将标签显示为百分比,则这对于堆叠条形图尤其理想。在mark_text中设置“ color ='black'”似乎不起作用。可能是因为它基于使用“颜色”参数作为“年份”的“条”。但是我找不到解耦此参数的直观方法。
import altair as alt
from vega_datasets import data
source = data.wheat()
bars = alt.Chart(source).mark_bar().encode(
x='wheat:Q',
y="year:O",
color='year:O'
)
text = bars.mark_text(
align='left',
baseline='middle',
color='black',
dx=3 # Nudges text to right so it doesn't appear on top of the bar
).encode(
text='wheat:Q'
)
(bars + text).properties(height=900)
答案 0 :(得分:0)
当您执行bars.mark_text()
时,结果图表将继承您在条形图中指定的所有内容,包括颜色编码。为了避免对文本进行颜色编码,最好的方法是确保其不继承颜色编码。
例如:
import altair as alt
from vega_datasets import data
source = data.wheat()
base = alt.Chart(source).encode(
x='wheat:Q',
y="year:O"
)
bars = base.mark_bar().encode(
color='year:O'
)
text = base.mark_text(
align='left',
baseline='middle',
dx=3 # Nudges text to right so it doesn't appear on top of the bar
).encode(
text='wheat:Q'
)
(bars + text).properties(height=900)
mark_text(color='black')
之所以没有覆盖代码段中的编码,是因为颜色编码优先于标记属性,如Global Config vs. Local Config vs. Encoding中所述。