Может ли кто-нибудь помочь мне выяснить, как отсортировать ось Y по полю в моем наборе данных? См. Код ниже. Я хочу отсортировать ось y, которая является полем concat строк ADP (десятичное число) и именем игрока NFL. Я хочу отсортировать эту ось y с помощью ADP, который представляет собой поле под названием «OWNER Player ADP», которое я использую как плавающее, когда оно входит в фрейм данных pandas. (Я хотел, чтобы это было число с десятичной точкой). Я также создал поле под названием ADP, которое в значительной степени то же самое, но является varchar, когда оно входит в фрейм данных pandas. В любом случае я не могу получить график для сортировки оси y по любому из этих двух вариантов полей ... Я также прилагаю два скриншота текущего вывода, чтобы вы могли видеть вывод данных и вывод диаграммы . Вы можете видеть, что Аарон Роджерс находится в верхней части списка, однако у него ADP 48,3. Я хочу, чтобы игрок с наименьшим номером ADP был в верхней части списка ...
import altair as alt
import pandas as pd
from main.views import sql_to_dataframe
#--get draft history for a specifc owner, league, and draft type
query ="""
SELECT draft_type,season,"Player Name","Player Team"
,count(*) "Times Drafted"
,cast(round(cast(SUM(pick_no) AS DECIMAL)/cast(COUNT(DISTINCT draft_id) AS DECIMAL),1) as varchar) "OWNER Player ADP"
,cast(round(cast(SUM(pick_no) AS DECIMAL)/cast(COUNT(DISTINCT draft_id) AS DECIMAL),1) as varchar) "ADP"
,concat(cast(round(cast(SUM(pick_no) AS DECIMAL)/cast(COUNT(DISTINCT draft_id) AS DECIMAL),1) as varchar),' ',"Player Team") "Player ADP"
,1 "x_axis"
FROM
mytable
GROUP BY draft_type,season,draft_type,"Player Name","Player Team"
"""
source = sql_to_dataframe(query)
source['OWNER Player ADP'] = source['OWNER Player ADP'].astype(float)
print(source.head())
base=alt.Chart(
source,
title="Player Average Draft Position"
).encode(
x=alt.X('x_axis:O')
,y=alt.Y('Player ADP:O',sort=alt.EncodingSortField(field="OWNER Player ADP:O",order ='descending', op='min'))
#,tooltip=['Player Team','OWNER Player ADP:O']
)
bar=base.mark_square(size=300).encode(
color=alt.Color('Times Drafted:Q', scale=alt.Scale(scheme="darkred"))#,domain=[5,0])
,tooltip=['Player Team','OWNER Player ADP:O','Times Drafted:N']
)
# Configure text
text = base.mark_text(baseline='middle',color='white').encode(
text='Times Drafted:O'
,tooltip=['Player Team','OWNER Player ADP:O','Times Drafted:N']
)
(bar+text).properties(width=50)#.interactive()
![DataFrame and output1](https://i.stack.imgur.com/ijh2v.png)