gpt4 book ai didi

altair - 在 Altair 中设置条形图上的标签格式

转载 作者:行者123 更新时间:2023-12-03 21:18:11 29 4
gpt4 key购买 nike

[![图表显示没有正确格式的数字][1]][1]

我需要格式化这些条上的标签,以便将它们四舍五入到最接近的整数。我有以下代码:

def chart_tender_response_times(dataframe=None):

chart = (
alt.Chart(dataframe, title="Median time to respond to a tender")
.mark_bar()
.encode(
alt.X("year(date):O"
),
alt.Y("mean(median_duration):Q",
## This is our units section, only describe the units of measurement here.
axis=alt.Axis(title="Unit: days.")
),
alt.Tooltip(["mean(median_duration):Q"], format=",.2r", title="Days to respond to a tender")
)
)

text = (
chart.mark_text(align="center", baseline="bottom")
.encode(text='mean(median_duration):Q')
)

return chart+text

我尝试了以下变体...

text = (
chart.mark_text(align="center", baseline="bottom")
.encode(text='mean(median_duration):Q', format='.,2r')
)

但这会返回以下架构验证错误:
SchemaValidationError: Invalid specification

altair.vegalite.v3.api.Chart, validating 'required'

'data' is a required property

我的直觉是,在将值添加到图表之前,我必须以某种方式调用和格式化该值,但我无法从文档或示例中看到如何执行此操作。

最佳答案

您需要将格式包装在 alt.Text 中,如 encode(text=alt.Text('mean(median_duration):Q', format=',.2r'))
另外,我认为 format=',.0f' 更健壮地四舍五入到最接近的整数(例如,如果你有 256.4,它会四舍五入到 256,而使用 format=',.2r' 你会得到 260)

下面是一个示例,其中一个函数稍作修改以适合另一个数据集(因为您没有提供):

import altair as alt
from vega_datasets import data

cars = data("cars")

def chart_tender_response_times(dataframe=None):
chart = (
alt.Chart(dataframe, title="Median time to respond to a tender")
.mark_bar()
.encode(
alt.X("year(Year):O"),
alt.Y(
"mean(Displacement):Q",
## This is our units section, only describe the units of measurement here.
axis=alt.Axis(title="Unit: days."),
),
alt.Tooltip(
["mean(Displacement):Q"],
format=",.0f",
title="Days to respond to a tender",
),
)
)

text = chart.mark_text(align="center", baseline="bottom").encode(
text=alt.Text("mean(Displacement):Q", format=",.0f")
)

return chart + text

chart_tender_response_times(cars)

enter image description here

关于altair - 在 Altair 中设置条形图上的标签格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58028429/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com