簡體   English   中英

Python Altair 如何在不更改軸刻度的情況下對直方圖數據進行分箱

[英]Python Altair How Do I Bin Histogram Data without Changing the Axis Ticks

在 altair 中,如何在不改變軸刻度的情況下制作直方圖? 當我嘗試對數據進行分箱時,軸刻度不再超出直方圖中的數據。 我寧願單獨計算箱和軸刻度。

下面的代碼是一個簡單的示例,試圖顯示測量的公差范圍內的限制,以查看有多少測量通過與失敗。

import numpy as np
import pandas as pd
import altair as alt



nominal = 0.500
tolerance = 0.011
limits = pd.DataFrame({'x_limits' : [nominal - tolerance, nominal + tolerance]})

data = pd.DataFrame({'x_data' : np.random.normal(0.520, 0.002, 100)})



layers = []

layers.append(alt.Chart(data)
         .mark_bar()
         .encode(x = alt.X('x_data', bin = alt.Bin(nice = False)), y = 'count()'))

layers.append(alt.Chart(limits)
         .mark_rule()
         .encode(x = 'x_limits'))

chart = alt.layer(*layers)

output 僅在直方圖箱下方顯示 X 軸上的刻度,並且它們在公差限制的規則之前停止。

對於分箱軸,我相信您需要設置箱的范圍來控制軸標簽。 在這種情況下,設置alt.Bin(maxbins=50, extent=(0.48, 0.54)))會給你:

在此處輸入圖像描述

我能夠通過使用mark_rect而不是mark_bar繪制直方圖來解決這個問題。 直接使用transform_bin可以讓您分別獲取每個 bin 的開始和結束(在本例中為xx2 )。 然后在比例中設置zero = False使邊界像以前一樣適合數據。

layers.append(alt.Chart(data)
.mark_rect()
.transform_bin(as_ = ['x', 'x2'], field = 'x_data')
.encode(x = alt.X('x:Q', scale = {'zero':False}), x2 = 'x2:Q', y = 'count()'))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM