Vega-lite中的缩放域与滤波器选择:自动轴缩放

时间:2020-01-27 15:01:34

标签: vega vega-lite altair

在Vega-Lite的Scale Domains docs中指出:

# RubenB's code
indices_dup = [np.repeat(i, quantity) for i, quantity in enumerate(slots.Quantity.values)]
slots_ext = slots.loc[np.concatenate(indices_dup).ravel(), :]

# Calculate the cumulative sum of the delta per rota ID
slots_ext["delta_sum"] = slots_ext.groupby("ID")["Duration"].cumsum()
slots_ext["delta_sum"] = pd.to_timedelta(slots_ext["delta_sum"], unit="minutes")

# Use the cumulative sum to calculate the running end dates and then the start dates
first_value = slots_ext.StartDate[0]
slots_ext["EndDate"] = slots_ext.delta_sum.values + slots_ext.StartDate
slots_ext["StartDate"] = slots_ext.EndDate.shift(1)
slots_ext.loc[0, "StartDate"] = first_value
slots_ext.reset_index(drop=True, inplace=True)

除了一个区别:

实际上几乎相同(尽管过滤方法要慢得多,如文档中所述),

  • 使用过滤器选择方法(demo),上方图表的y轴将自动放大到所选点。这非常整洁,特别是如果您有大量积分的话。
  • 使用比例域方法(demo),在选择周围移动时,y轴保持冻结状态。

问题:通过“比例域”方法(与过滤选择方法相同),是否可以在移动选择时使y轴自动放大到选定的点?

为什么上述区别很重要?想象一下,去年股价平均每天平均上涨1美元(但在特定的一天内,它可能表现出任何种类的波动性行为),而我们正在用线条标记它。如果绘制整个年份,则会看到整个图片。但是,如果您在特定的一天放大而未重置y轴缩放,则您的日内价格图只会是一条平线,或者接近该水平线。

///我已经在vega-lite,altair repo和SO上检查了所有与规模域相关的问题,但是找不到任何相关的问题;我还posted this question参与了GH的vega-lite存储库,但被转发给了SO。

1 个答案:

答案 0 :(得分:0)

不。除非另有说明,否则y比例是根据图中的所有数据确定的。

过滤数据时,图中的数据会发生变化,从而导致y轴发生变化。当您基于x选择更改比例而不过滤数据时,它不会更改图中的数据,因此y比例保持不变。

如果您要根据选择范围内的数据自动确定y比例,唯一的选择是对选择范围进行过滤。