Python 是否可以从Altair上的和X中筛选并绘制它?
我尝试修改一个脚本,筛选前十名供应商(Python 是否可以从Altair上的和X中筛选并绘制它?,python,altair,Python,Altair,我尝试修改一个脚本,筛选前十名供应商(proveedor\u nombre),这意味着,那些从降序中获得更多资金但从未开始工作的供应商 因为我甚至不知道我做错了什么,你们知道我有什么办法可以得到想要的结果吗 以下是原始代码: # Monto total asignado por proveedor proveedores_dinero = alt.Chart(df).mark_circle().encode( x = alt.X('proveedor_nombre:N'), y
proveedor\u 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
这里是输出:
可以在
transform\u窗口
上应用rank
来过滤顶部的n
结果。但是,丢失的校准孔的圆圈将绘制在轴x=0
上,在这种情况下,它通过顶部n+1
值过滤y
值。在下面的示例中,我正在绘制6个可能的前3个Proveeder
# Generate raw data
data = {
'proveedor_nombre': ['proveedor_1', 'proveedor_2', 'proveedor_4', 'proveedor_1', 'proveedor_2', 'proveedor_3',
'proveedor_4', 'proveedor_1', 'proveedor_5', 'proveedor_6', 'proveedor_4', '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
)
#生成原始数据
数据={
“provedor_nombre:[“provedor_1”、“provedor_2”、“provedor_4”、“provedor_1”、“provedor_2”、“provedor_3”,
“proveedor_4”、“proveedor_1”、“proveedor_5”、“proveedor_6”、“proveedor_4”、“proveedor_5”
],
“monto_contato_minimo”:[389,24,80,253,111,54,345,117,954678,99]
}
df=pd.DataFrame.from_dict(数据)
#前n个ProveeStores的存储值
data_sum=df.groupby('proveedor_nombre').agg({'monto_contrato_minimo':'sum'}).sort_值(按='monto_contrato_minimo',升序=False)
#绘制前3名proveedor_nombre
alt.Chart(df).标记圆圈().编码(
x=alt.x('proveedor_nombre:N',sort='-y',scale=alt.scale(域=列表(数据总和索引[:3])),
y=alt.y(‘和(月对月)∶Q’,
).转换窗口(
rank='rank(monto'u contracto'u minimo)',
排序=[alt.SortField('sum(monto\u contracto\u minimo'),order='descending')]
).transform_过滤器(
(alt.datum.rank<4)
).transform_过滤器(
(alt.datum.monto_contato_minimo>data_sum.iloc[3][0])
).物业(
宽度=500,高度=300
)
将导致