簡體   English   中英

如何使用 mark_rule() 在 Altair 圖表中顯示一條垂直線

[英]How to show a vertical line in an Altair chart using mark_rule()

我正在使用 Python 和 Altair 創建直方圖。 我可以包含一條垂直線作為平均值,這是可行的,但第一個四分位數(第 25 個分位數)的代碼不會產生一條垂直線。

我認為這是基於我使用 numpy 函數來計算第一個四分位數。 但我不確定如何以不同的方式做到這一點。

我錯過了什么? 謝謝!

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

df = pd.util.testing.makeDataFrame()

chart = (
    alt.Chart(df)
    .mark_bar()
    .encode(alt.X("A:Q", bin = True), y = "count()")
    .properties(width = 800, height = 300)
) 

# create mean rule ***WORKS***
mean = (
    alt.Chart(df)
    .mark_rule()
    .encode(
        x = "mean(A):Q"
    )
)

chart + mean

在此處輸入圖片說明

# create Q1 rule *** vertical line is NOT showing***
Q1 = (
    alt.Chart(df)
    .mark_rule()
    .encode(
        x = "np.quantile(A, 0.25):Q"
    )
)

chart + Q1

在此處輸入圖片說明

有什么建議么? 謝謝!

Altair 編碼字符串不會解析任意的 Python 代碼,因此調用 numpy 函數將不起作用。

對於 Altair 中的分位數,您可以使用quantile transform 以下是您的數據示例:

Q1 = (
    alt.Chart(df)
    .transform_quantile('A', probs=[0.25], as_=['prob', 'value'])
    .mark_rule()
    .encode(
        x = "value:Q"
    )
)

chart + Q1

在此處輸入圖片說明

暫無
暫無

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

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