python - 如何使用 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 中的分位数,您可以使用分位数变换。这是您的数据的示例:
Q1 = (
alt.Chart(df)
.transform_quantile('A', probs=[0.25], as_=['prob', 'value'])
.mark_rule()
.encode(
x = "value:Q"
)
)
chart + Q1
推荐阅读
- java - 如何以编程方式打开我在 Android 应用程序中创建的文件夹?
- sharepoint-designer - 使用 REST API 过滤共享点列表中的日期
- c# - 可以在 foreach 循环中引发外部事件吗?
- java - 将相同类型的多个列加载为列表
通过 JPA/Hibernate 中的列名模式的字段 - flutter - 如何在 Flutter 应用中设置固定的屏幕尺寸
- javascript - 带有道具的“if/else”语句
- android - 如果没有互联网连接,如何停止将图像上传到云存储
- django - 如何在具有不同动态 DJANGO_SETTINGS_MODULE 环境变量的同一服务器上运行两个 django 应用程序
- wpf - 材料设计 - Wpf - 文本框 - 更改颜色
- c++ - 如何使用 cmake pack redhat 风格的 rpm,major 和“-devel”?