Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否可以从Altair上的和X中筛选并绘制它?_Python_Altair - Fatal编程技术网

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
)
将导致