Python Altair:如何根据线的最大值在镶嵌面网格中设置不同的线样式?
我试图创建一个刻面图来比较睡眠剥夺研究中受试者的反应时间。数据来自Python Altair:如何根据线的最大值在镶嵌面网格中设置不同的线样式?,python,data-visualization,facet,altair,Python,Data Visualization,Facet,Altair,我试图创建一个刻面图来比较睡眠剥夺研究中受试者的反应时间。数据来自sleepstudy数据集,可在pydataset软件包中获得 通过使用altair.condition,我能够以不同的方式设计线条。问题是我没有得到我想要的结果。我的目标是用橙色突出显示至少一次超过400(ms)的线条,即下图中的308、332和337 我在下面代码中使用的alt.condition似乎只测试df.Reaction系列的第一个数据 我正在使用altair4.0.1 将altair导入为alt 从pydataset
sleepstudy
数据集,可在pydataset
软件包中获得
通过使用altair.condition,我能够以不同的方式设计线条。问题是我没有得到我想要的结果。我的目标是用橙色突出显示至少一次超过400(ms)的线条,即下图中的308、332和337
我在下面代码中使用的alt.condition
似乎只测试df.Reaction
系列的第一个数据
我正在使用altair4.0.1
将altair导入为alt
从pydataset导入数据
df=数据(“睡眠研究”)
alt.Chart(df).标记线().编码(
x=alt.x('Days:O',title=''),
y=alt.y('Reaction:Q',title='',scale=alt.scale(domain=(200450)),
#如何测试条件:在研究过程中,最大(反应)>400ms是否至少测试一次?
颜色=alt.condition(
alt.datum['Reaction']>300,
alt.value(“橙色”),
alt.value('darkgray')
),
facet=alt.facet('Subject:O',columns=3,title=''),
).物业(
title='10天以上睡眠剥夺受试者的反应时间(ms)',
宽度=200,
高度=100
)
您可以通过使用计算每个窗格中的最大值,然后根据该最大值进行着色来完成此操作:
import altair as alt
from pydataset import data
df = data('sleepstudy')
alt.Chart(df).transform_joinaggregate(
maxReaction='max(Reaction)',
groupby=['Subject']
).mark_line().encode(
x=alt.X('Days:O', title=''),
y=alt.Y('Reaction:Q', title='', scale=alt.Scale(domain=(200, 450))),
# How do I test for the condition: is max(reaction) > 400 ms at least once during the study?
color=alt.condition(
alt.datum['maxReaction'] > 400,
alt.value('orange'),
alt.value('darkgray')
),
facet=alt.Facet('Subject:O', columns=3, title=''),
).properties(
title='Reaction times (ms) for sleep-deprived subjects over 10 days',
width=200,
height=100
)