Altair 行和列标题

altair row and column titles

之前有一个问题提供了以下示例,该示例很好地展示了设置哪些标题以及如何设置。我想知道是否有人可以提供更多帮助。

我的图表类似于下面的示例,只是我有图表的列和行。列基于一个变量,行基于其他变量。这些是条件概率。目前,列名自动提供在与示例中的 'setosa'、'versicolor' 和 'virginica' 相同的位置。

以下是我想做的事情,需要指导:

  1. 鉴于下图,我如何更新“Y Title”,使其显示“Some text”,然后第二行显示该行所基于的变量名称?

  2. 如何获取“列标题”以及 'setosa'、'versicolor' 和 'virginica' 以便为每一行重复?

  3. x-axis 值为年份。目前大约有 10 年,它们被压在一起。我只想出现几年中的几年。我也希望对每一行重复此操作。我认为这会被视为 x-axis 刻度标签。

我真的需要更好地学习所有图表部分的名称以及刻面的来龙去脉。何时分面何时连接...

我希望提供下图中的示例能够很好地形象化我的问题。如果需要更多信息,请告诉我。

(另外,如果有人能给我指出一个很好的资源来了解更多关于 altair 的信息,那就太好了。我正在阅读“Jake VanderPlas - 使用 Vega 进行探索性数据可视化,Vega-Lite, 和 Altair - PyCon 2018" 目前在 YouTube 上。也许这就足够了,但任何其他学习这个的指针都会很棒。)

  1. 你的意思是这样的吗:
import altair as alt
import pandas as pd

source = pd.DataFrame(
    [
        {"a": "a1", "b": "b1", "c": "x", "p": 0.14},
        {"a": "a1", "b": "b1", "c": "y", "p": 0.60},
        {"a": "a1", "b": "b1", "c": "z", "p": 0.03},
        {"a": "a1", "b": "b2", "c": "x", "p": 0.80},
        {"a": "a1", "b": "b2", "c": "y", "p": 0.38},
        {"a": "a1", "b": "b2", "c": "z", "p": 0.55},
        {"a": "a2", "b": "b1", "c": "x", "p": 0.83},
        {"a": "a2", "b": "b1", "c": "y", "p": 0.87},
        {"a": "a2", "b": "b1", "c": "z", "p": 0.67},
        {"a": "a2", "b": "b2", "c": "x", "p": 0.97},
        {"a": "a2", "b": "b2", "c": "y", "p": 0.84},
        {"a": "a2", "b": "b2", "c": "z", "p": 0.90},
    ]
)

alt.Chart(source, width=200).mark_bar().encode(
    y=alt.Y("c", title=['Some text', 'Variable `c`']),
    x="p",
    color='c',
    row=alt.Row("a:N", title="Factor A", header=alt.Header(labelAngle=0)),
    column=alt.Column("b:N", title="Factor B"),
)

  1. 不幸的是,我认为这是不可能的。
  2. 根据您的描述,听起来您可以将列设置为序数类型 ('column_name:O'),或者使用 tickCountsvalues,如 . If that doesn't work, could you ask a new question including code for a Minimal reproducible example?

如果您有其他具体问题,可以使用上面的示例,该示例同时包含多面行和多列。

关于资源,我们正在更新文档以包含一些额外的示例。您可以在此 PR https://github.com/altair-viz/altair/pull/2415/files

中找到更新资源列表