[英]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.