【问题标题】:How to make "small multiples" (map) chart in Altair如何在 Altair 中制作“小倍数”(地图)图表
【发布时间】:2020-12-08 15:50:21
【问题描述】:

我正在尝试制作一个小的倍数地图;像这样的

与 GeoPandas 和 Altair。我的数据集有以下字段:

  • weekNumber
  • percentageDiff
  • geometry

我想为每个weekNumber 创建一个映射,显示percentageDiff 列中的值。

我已经设法在一行上制作了多张地图,但不是在像这样的网格中。这是我的一行地图代码:

charts = []
for x in range(12):
    chart = alt.Chart(ntaGeoData[ntaGeoData.weekNumber == x]).mark_geoshape().encode(
        color=alt.Color(
            'percentageDiff:Q',
            scale=alt.Scale(scheme='redblue',domain=(-1,1)))
    ).properties(
        width=200,
        height=200
    )
    charts.append(chart)

alt.hconcat(*charts)

有什么想法吗?谢谢!

实际数据如下:

geometry    weekNumber  citiStartDiff   NTAName
0   POLYGON ((-73.99236 40.68969, -73.99436 40.690...   0   -0.319463   Brooklyn Heights-Cobble Hill
1   POLYGON ((-73.99236 40.68969, -73.99436 40.690...   1   0.232122    Brooklyn Heights-Cobble Hill
2   POLYGON ((-73.99236 40.68969, -73.99436 40.690...   2   0.101468    Brooklyn Heights-Cobble Hill
3   POLYGON ((-73.99236 40.68969, -73.99436 40.690...   3   0.191144    Brooklyn Heights-Cobble Hill
4   POLYGON ((-73.99236 40.68969, -73.99436 40.690...   4   0.378864    Brooklyn Heights-Cobble Hill
... ... ... ... ...
6147    MULTIPOLYGON (((-73.86523 40.57046, -73.86454 ...   4   2.520000    park-cemetery-etc-Queens
6148    MULTIPOLYGON (((-73.86523 40.57046, -73.86454 ...   5   0.030769    park-cemetery-etc-Queens
6149    MULTIPOLYGON (((-73.86523 40.57046, -73.86454 ...   6   -0.015625   park-cemetery-etc-Queens
6150    MULTIPOLYGON (((-73.86523 40.57046, -73.86454 ...   7   1.150000    park-cemetery-etc-Queens
6151    MULTIPOLYGON (((-73.86523 40.57046, -73.86454 ...   8   0.509804    park-cemetery-etc-Queens

【问题讨论】:

    标签: python pandas jupyter-notebook geopandas altair


    【解决方案1】:

    听起来您想要wrapped facet。它看起来像这样:

    alt.Chart(ntaGeoData).mark_geoshape().encode(
        color=alt.Color(
            'percentageDiff:Q',
            scale=alt.Scale(scheme='redblue',domain=(-1,1))),
        facet=alt.Facet('weekNumber:O', columns=4)
    ).properties(
        width=200,
        height=200
    )
    

    不幸的是,由于 Vega-Lite 中的 bug,这种刻面不适用于地理可视化。作为一种解决方法,您可以手动过滤 pandas 中的数据,并通过连接创建一个小的倍数图表。例如:

    alt.concat(*(
        alt.Chart(ntaGeoData[ntaGeoData.weekNumber == weekNumber]).mark_geoshape().encode(
          color='citiStartDiff:Q',
        ).properties(
          width=200, height=200
        )
        for weekNumber in range(8)
      ), columns=4
    )
    

    【讨论】:

    • 谢谢,它似乎可以创建网格,但没有数据显示。任何想法为什么? @jakevdp
    • 没有看到你的数据很难猜测。
    • 我已经用准确数据的样本更新了这个问题。如果有帮助,我也可以将文件发送给您。谢谢!
    • 谢谢,但是数据的部分字符串表示并不是那么有用。我不确定为什么它不起作用,并且如果没有运行代码的能力就无法进行调查。祝你好运!
    • 谢谢,如果有帮助,这里是数据文件:github.com/juanfrans/data-sample
    猜你喜欢
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 2021-04-20
    相关资源
    最近更新 更多