【发布时间】:2020-06-20 23:47:30
【问题描述】:
谁能帮我弄清楚如何让我的 y 轴按数据集中的字段排序? 请参阅下面的代码。我想对 y 轴进行排序,它是 ADP 的字符串 concat 字段(十进制数)和 NFL 球员姓名。我想通过 ADP 对这个 y 轴进行排序,ADP 是一个名为“OWNER Player ADP”的字段,一旦它进入 pandas 数据帧,我就会将其转换为浮点数。 (我希望它是一个带小数点的数字) 我还创建了一个名为 ADP 的字段,它几乎是一样的,但是当它进入 pandas 数据框时它是一个 varchar。在任何一种情况下,我似乎都无法让图表在这两个字段变体中的任何一个上对 y 轴进行排序......我还附上了当前输出的两个屏幕截图,以便您可以查看数据输出和图表输出.您可以看到 Aaron Rodgers 位居榜首,但他的 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()
【问题讨论】:
标签: python pandas sorting graph altair