首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在altair.layered绘图中配置条形图?

如何在altair.layered绘图中配置条形图?
EN

Stack Overflow用户
提问于 2021-01-15 00:25:03
回答 1查看 43关注 0票数 1

在使用streamlit时,我开始使用altair绘制数据。在使用它的过程中,我遇到了以下问题:

我想要绘制一个具有以下结构的DataFrame:

代码语言: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],
})

现在,我想将该度量与条形图中的max_measure进行比较:

代码语言:javascript
复制
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)

我得到的东西是这样的:

或者类似的东西:

但我希望最高的横杆总是在背景中,所以就像这样:

有人能帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-15 01:24:37

层始终按照层图表中指定的顺序显示。在您的例子中,您需要measure_max_plot下面所示的measure_plot的一部分,以及上面所示的部分。您可以通过过滤和添加另一个层来完成此操作:

代码语言:javascript
复制
altair_plot = alt.layer(
    measure_plot.transform_filter(alt.datum.measure > alt.datum.measure_max),
    measure_max_plot,
    measure_plot.transform_filter(alt.datum.measure < alt.datum.measure_max)
)

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

https://stackoverflow.com/questions/65722838

复制
相关文章

相似问题

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