如何解决如何使用 mark_rule() 在 Altair 图表中显示一条垂直线
我正在使用 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。