首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在altair分层图中添加图例

如何在altair分层图中添加图例
EN

Stack Overflow用户
提问于 2021-01-16 03:46:49
回答 1查看 527关注 0票数 1

所以我有以下代码:

代码语言:javascript
复制
workload_df = pd.DataFrame({
'index': pd.to_datetime(['01.02.2010', '01.03.2010', '01.04.2010']),
'measure': [100, 90, 120],
'measure_max': [80, 100, 150],
})

measure_max_plot = alt.Chart(workload_df).mark_bar(color = 'lightgreen', text = 'measure_max').encode(
    alt.X('index', title = '', axis = alt.Axis(labelAngle = -45, labelOverlap = False)),
    alt.Y('measure_max', title = '')
)

measure_plot = alt.Chart(workload_df).mark_bar(text = 'measure').encode(
  x = alt.X('index', title = 'X', axis = alt.Axis(labelAngle = -45, labelOverlap = False)), 
  y = alt.Y('measure', title = 'Y'),

  color=alt.condition(
    alt.datum.measure > alt.datum.measure_max,  
    alt.value('red'),     
    alt.value('steelblue')   
  )
)
altair_plot = alt.layer(measure_max_plot, measure_plot)
st.altair_chart(altair_plot, use_container_width=True)

我已经尝试使用以下解决方案添加图例:Add legend to line & bars to Altair chart without using size/color

但是总是得到一个奇怪的错误,或者得到一个没有任何绘图数据的图例。

有人能帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2021-01-16 05:00:51

为了将图例添加到图表中,您需要图例将表示的编码。例如,下面是如何添加将生成颜色图例的颜色编码的方法:

代码语言:javascript
复制
measure_max_plot = alt.Chart(workload_df).transform_calculate(
    color='"measure_max"'
).mark_bar(text = 'measure_max').encode(
    alt.X('index', title = '', axis = alt.Axis(labelAngle = -45, labelOverlap = False)),
    alt.Y('measure_max', title = ''),
    alt.Color('color:N')
)

measure_plot = alt.Chart(workload_df).transform_calculate(
  color="datum.measure > datum.measure_max ? 'bigger' : 'smaller'"
).mark_bar(text = 'measure').encode(
  x = alt.X('index', title = 'X', axis = alt.Axis(labelAngle = -45, labelOverlap = False)), 
  y = alt.Y('measure', title = 'Y'),
  color = alt.Color('color:N', scale=alt.Scale(range=['red', 'lightgreen', 'steelblue']))
)
altair_plot = alt.layer(measure_max_plot, measure_plot)

请注意,默认情况下,色标在两个分层图表之间共享。可以使用Scale & guide resolution应用编程接口对此行为进行微调。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65742658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档