是否可以在Altair上以和X的降序对其进行过滤和绘制?

如何解决是否可以在Altair上以和X的降序对其进行过滤和绘制?

我试图改编一个answered here before脚本,以筛选排名前十的供应商(proveedor_nombre),这意味着,那些以降序获得更多资金但从没有工作。

由于我什至不知道自己在做错什么,你们有什么办法知道我可以得到理想的结果

这是原始代码

# Monto total asignado por proveedor

proveedores_dinero = alt.Chart(df).mark_circle().encode(
    x = alt.X('proveedor_nombre:N'),y = alt.Y('sum(monto_contrato_minimo):Q'),)

proveedores_dinero

这里是输出

enter image description here

解决方法

可以在rank上应用transform_window来过滤排名靠前的n结果。但是,遗漏的证明子圆将绘制在轴x=0上,在这种情况下,它可以根据顶部的y值来过滤n+1值。在以下示例中,我绘制了6个可能的前3个证明人。

# Generate raw data
data = {
    'proveedor_nombre': ['proveedor_1','proveedor_2','proveedor_4','proveedor_1','proveedor_3','proveedor_5','proveedor_6','proveedor_5'
                        ],'monto_contrato_minimo': [389,24,80,253,111,54,345,117,9,546,678,99]
}
df = pd.DataFrame.from_dict(data)

# Store value of top n proveedores
data_sum = df.groupby('proveedor_nombre').agg({'monto_contrato_minimo':'sum'}).sort_values(by='monto_contrato_minimo',ascending=False)

# Plot top 3 proveedor_nombre
alt.Chart(df).mark_circle().encode(
    x = alt.X('proveedor_nombre:N',sort='-y',scale=alt.Scale(domain=list(data_sum.index[:3]))),y = alt.Y('sum(monto_contrato_minimo):Q'),).transform_window(
    rank='rank(monto_contrato_minimo)',sort=[alt.SortField('sum(monto_contrato_minimo)',order='descending')]
).transform_filter(
    (alt.datum.rank < 4)  
).transform_filter(
    (alt.datum.monto_contrato_minimo > data_sum.iloc[3][0]) 
).properties(
    width=500,height=300
)

将导致

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?