Python Altair:如何向具有行的条形图添加标签
当尝试向有行的Altair条形图添加标签时,我得到一个SchemaValidationError。我所说的标签如下: 我说的是带行的条形图或“水平分组条形图”,如下所示: 以下是不起作用的代码:Python Altair:如何向具有行的条形图添加标签,python,python-3.x,jupyter-notebook,altair,Python,Python 3.x,Jupyter Notebook,Altair,当尝试向有行的Altair条形图添加标签时,我得到一个SchemaValidationError。我所说的标签如下: 我说的是带行的条形图或“水平分组条形图”,如下所示: 以下是不起作用的代码: from vega_datasets import data source = data.barley() bars = alt.Chart(source).mark_bar().encode( x='sum(yield):Q', y='year:O', row='var
from vega_datasets import data
source = data.barley()
bars = alt.Chart(source).mark_bar().encode(
x='sum(yield):Q',
y='year:O',
row='variety:N',
)
bars
text = bars.mark_text(
align='left',
baseline='middle',
dx=3 # Nudges text to right so it doesn't appear on top of the bar
).encode(
text='sum(yield):Q'
)
bars + text
如果删除条形图中的“行”选项,它将按预期工作:
bars = alt.Chart(source).mark_bar().encode(
x='sum(yield):Q',
y='year:O'
)
bars
text = bars.mark_text(
align='left',
baseline='middle',
dx=3 # Nudges text to right so it doesn't appear on top of the bar
).encode(
text='sum(yield):Q'
)
bars + text
将行添加到“mark_text”方法也没有帮助
最后,我希望看到我的栏右侧的标签,如图所示:
代码片段中的错误为
ValueError: Faceted charts cannot be layered.
一般来说,无法保证两个刻面图表将具有能够分层的匹配刻面,因此Vega Lite不允许对刻面图表进行分层
解决这一问题的方法是将分层图表分面,而不是将分面图表分面。例如:
import altair as alt
from vega_datasets import data
source = data.barley()
bars = alt.Chart(source).mark_bar().encode(
x='sum(yield):Q',
y='year:O',
)
bars
text = bars.mark_text(
align='left',
baseline='middle',
dx=3 # Nudges text to right so it doesn't appear on top of the bar
).encode(
text='sum(yield):Q'
)
(bars + text).facet(row='variety:N')
对不起,我跑得太快了。您的代码不起作用:(.我仍然收到与我已报告的错误相同的错误。请确保您使用的是Altair 3.1版或更高版本。在旧版本中,必须以不同的方式指定数据。如果由于某种原因您无法使用最新版本的Altair,请删除
source
作为alt.Chart()的参数
并将其作为facet的参数:facet(row='variety:N',data=source)
谢谢你的提示!使用altair 3.1它可以:)如果你想在1931年按收益率之和对上面的图表进行排序,以便行的顺序是Trebi,威斯康星州第38号,第457号,你会怎么做?