加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 如何为我的绘图中的每一行的Y轴标签排序不同?

发布时间:2020-12-20 11:09:51 所属栏目:Python 来源:网络整理
导读:我希望每个子图根据定义条形大小的值对标签进行排序. 见示例图片: data = {'label': ['A','A','B','B'],'variable': ['x','y','x','y'],'value':[2,4,3,1]} df = pd.DataFrame.from_dict(data) selector = alt.selection_single(empty='all',fields=['label
我希望每个子图根据定义条形大小的值对标签进行排序.

见示例图片:

enter image description here

data = {'label': ['A','A','B','B'],'variable': ['x','y','x','y'],'value':[2,4,3,1]}
    df = pd.DataFrame.from_dict(data)
    selector = alt.selection_single(empty='all',fields=['label'])
    bar = alt.Chart(df,title='My Plot').mark_bar().encode(
        alt.Y('label',sort=alt.EncodingSortField(field="value",op="mean",order='ascending'),axis=alt.Axis(title='Label')),alt.X('value:Q',axis=alt.Axis(format='%',title='Value')),alt.Row('variable',title='Variable'),color=alt.condition(selector,alt.value('orange'),alt.value('lightgray')),tooltip=[alt.Tooltip('label',title='Label'),alt.Tooltip('value:Q',format='.2%',title='Value'),]
    ).add_selection(selector)
    chart = (bar).properties(width=700,height=300)
    display(chart)

在示例中,标签(A,B)现在根据这些标签的所有值的平均值进行排序.我希望订单为标签X的B-A和标签Y的A-B(因此根据Altair图的行中显示的标签值降序).

解决方法

通过设计构面图共享它们的轴,这意味着当您对列进行排序时,您将按整个数据集对两个轴进行排序.

如果您希望每个图表单独对其轴进行排序,我认为唯一的方法是手动过滤数据集并连接图表.这是你可以这样做的一种方式:

import altair as alt
import pandas as pd

df = pd.DataFrame({'label': ['A',1]})

base = alt.Chart(df).mark_bar().encode(
  alt.Y('label',axis=alt.Axis(title='Label'),op="sum",order='descending')),axis=alt.Axis(format='d',format='d',],)

alt.vconcat(
  base.transform_filter("datum.variable == 'x'").properties(title='x'),base.transform_filter("datum.variable == 'y'").properties(title='y'),title='My Chart'
)

enter image description here

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读