Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Altair:如何向具有行的条形图添加标签_Python_Python 3.x_Jupyter Notebook_Altair - Fatal编程技术网

Python Altair:如何向具有行的条形图添加标签

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

当尝试向有行的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='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号,你会怎么做?