【问题标题】:How to adjust the scale of a multigraph (Altair) and add a legend?如何调整多图(Altair)的比例并添加图例?
【发布时间】:2021-05-14 23:12:33
【问题描述】:

我的代码:

    size = alt.datum.confirmed > 0

    testplot1 = alt.Chart(df_ww_ru).transform_filter(
        size
    ).mark_line(color='red').encode(
        x=alt.X('date:T', type='temporal', title='Дата'),
        y=alt.Y('sum(confirmed):Q',  title='aboba'),
        tooltip='sum(confirmed)'
    )

    testplot2 = alt.Chart(df_ru_ru).transform_filter(
        size
    ).mark_line(color='blue').encode(
        x=alt.X('date:T', type='temporal', title='Дата'),
        y=alt.Y('sum(confirmed):Q', title='aboba'),
        tooltip='sum(confirmed)'
    )

    testplot_rez = alt.layer(testplot1, testplot2).configure_view(
    ).properties(
        width=820,
        height=500
    ).configure_axis(
        labelFontSize=17,
        titleFontSize=20
    )

结果,我得到了这样一个具有完全巨大比例的图表。当我显示一个非组合时间表时,一切都很好。

如何解决这个问题?我还需要在需要签名这两行的地方添加一个图例,该怎么做?是否可以以与 matplotlib 类似的方式进行操作?也就是说,手动命名所有内容。

【问题讨论】:

    标签: python altair


    【解决方案1】:

    就添加图例而言,最简单的方法可能是将您的两个数据框组合起来,这样就有一个数据框,其中包含 dateconfirmedcategory 列。 category 的值将是 wu_ruru_ru。这样,您可以在创建 altair 绘图并拥有legend created automatically as in this example 时设置编码color='category'。您可能可以使用 pandas merge 或 concat 来组合 dfs,然后 pandas melt 将其转换为正确的格式。 More info about data formats in Altair can be found in the docs.

    就 y 轴范围而言,它会自动调整为数据中的内容,因此我会查看您那里的值并确保没有真正大的值偏离轴.如果您想手动更改轴刻度,可以使用alt.Y('sum(confirmed):Q', scale=alt.Scale(domain=0, 1000))

    【讨论】:

      猜你喜欢
      • 2021-04-20
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-29
      • 2017-09-04
      • 1970-01-01
      相关资源
      最近更新 更多