如何使用 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
我正在使用 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