python - 如何使用 vega-lite 创建与此类似的条形图?

标签 python missing-data vega-lite altair

我有兴趣能够重新创建下面这个由 Missing Numbers 生成的多维带状图。 python 库,使用 vega-lite,我正在寻找一些关于如何做到这一点的指示。生成下面图像的代码看起来有点像这个片段:

>>> from quilt.data.ResidentMario import missingno_data
>>> collisions = missingno_data.nyc_collision_factors()
>>> collisions = collisions.replace("nan", np.nan)

>>> import missingno as msno
>>> %matplotlib inline
>>> msno.matrix(collisions.sample(250))


Missing Number multi dimensional strip plot

对于每一列,都会显示一个用于特定索引组合的标记,以及数据为空或不为空的位置。

当我浏览 Altair 创建的图表库时,我看到了这个水平条形图,它似乎呈现了类似的信息,但我不确定如何表达相同的想法。

当存在与马力和气缸尺寸的给定组合匹配的数据时,下面的可视化显示一个标记 - 马力和气缸被编码到 x 和 y channel 中。

Altair strip plot

我没有展示如何表达很酷的无效矩阵,我想我在这里需要一些指导。

我知道我可以重置并索引以得出 y 索引,但我不清楚如何在 Y channel 中对样本进行索引,我不确定如何填充 x-轴,其中有一列列出了空/非空结果。这是我在进入 vega-lite 之前需要做的事情吗?还是 vega 支持它?

最佳答案

是的,您可以在使用 Fold Transform reshape 数据后执行此操作。使用 Altair 看起来像这样:

import numpy as np
import quilt
quilt.install("ResidentMario/missingno_data")

from quilt.data.ResidentMario import missingno_data
collisions = missingno_data.nyc_collision_factors()
collisions = collisions.replace("nan", np.nan)
collisions = collisions.set_index("Unnamed: 0")
import altair as alt

alt.Chart(collisions.sample(250)).transform_window(
    index='row_number()'
).transform_fold(
    collisions.columns.to_list()
).transform_calculate(
    defined="isValid(datum.value)"
).mark_rect().encode(
    x=alt.X('key:N',
        title=None,
        sort=collisions.columns.to_list(),
        axis=alt.Axis(orient='top', labelAngle=-45)
    ),
    y=alt.Y('index:O', title=None),
    color=alt.Color('defined:N',
        legend=None,
        scale=alt.Scale(domain=["true", "false"], range=["black", "white"])
    )
).properties(
    width=800, height=400
)

enter image description here

关于python - 如何使用 vega-lite 创建与此类似的条形图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61078333/

相关文章:

vega-lite:单个图表中的多个标记

powerbi - 使用 vega-lite 的甘特图示例

python - 检查 Moodle 的散列密码

python - Django如何生成uuid?

#ifdef DEBUG 的 Python 等效项

r - 将随机缺失值的精确比例添加到 data.frame

r - 在 R 中,如何用列均值替换缺失值?

python - 如何在没有索引的情况下将 Pandas 数据帧打印到 Latex?

r - 报告 data.frame 中缺失值的优雅方法

elasticsearch - Vega-lite热图更改颜色,位置,测试