首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >人工计算牛尾中的盒形晶须

人工计算牛尾中的盒形晶须
EN

Stack Overflow用户
提问于 2022-02-07 17:40:59
回答 1查看 257关注 0票数 2

我正在寻找一种方法,可以在altair本身中手动找到方框晶须的值(因此不需要在dataframe中添加额外的列)。

下面是我想要创造的一个情节。橙色区域应与盒状晶须对齐,因此在1.5*iqr范围内的第一个'x‘值。

我一直在玩vega表达式(inrange,clampRange .)但却找不到办法去做。

在Vega编辑器中打开图表

代码语言:javascript
复制
import altair as alt
import pandas as pd

values =  [0, 3, 4.4, 4.5, 4.6, 5, 7]
df = pd.DataFrame({'x': values})

points = alt.Chart(df).mark_circle(color='black', size=120).encode(
    x=alt.X('x:Q', scale=alt.Scale(zero=False)),
)

boxplot = alt.Chart(df).mark_boxplot(ticks=True, extent=1.5, outliers=True).encode(
    x='x:Q',
)

iqr = alt.Chart(df).mark_rect(color='lime').encode(
    x='q1(x):Q',
    x2='q3(x):Q'
)

whiskers = alt.Chart(df).mark_rect(color='orange').transform_aggregate(
    q1='q1(x)',
    q3='q3(x)',
).transform_calculate(
    iqr=alt.datum.q3 - alt.datum.q1,
    q0=alt.datum.q1 - (alt.datum.iqr * 1.5),
    q100=alt.datum.q3 + (alt.datum.iqr * 1.5),
).encode(
    x='q0:Q',
    x2='q100:Q',
)

minmax = alt.Chart(df).mark_rect(color='red').transform_aggregate(
    xmin='min(x)',
    xmax='max(x)'
).encode(
    x='xmin:Q',
    x2='xmax:Q',
).properties(width=1000)


((boxplot + points) & (minmax + whiskers + iqr + points)).resolve_scale(x='shared')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-07 19:43:35

这里的关键是能够使用四分位数的聚合值来过滤原始数据。当您使用transform_aggregate时,您正在将数据缩减为只包含正在创建的聚合值。如果使用transform_joinaggregate,则将聚合值连接到原始数据,这意味着您可以使用transform_filter返回q1/q3 -/+ 1.5 *IQR范围内的最大和最小原始数据点:

代码语言:javascript
复制
whiskers = alt.Chart(df).mark_rect(color='orange').transform_joinaggregate(
    q1='q1(x)',
    q3='q3(x)',
).transform_calculate(
    iqr='datum.q3 - datum.q1'
).transform_filter(
    # VL concatenates these strings so we can split
    # them on two lines to improve readability
    'datum.x < (datum.q3 + datum.iqr * 1.5)'
    '&& datum.x > (datum.q1 - datum.iqr * 1.5)'
).encode(
    x='min(x)',
    x2='max(x)',
)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71022972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档