要自定义Apache Superset中图表的X/Y轴数字格式化,你可以使用Superset提供的格式化选项来实现。下面是一个示例代码,演示了如何自定义X/Y轴数字格式化:
from superset.charts.builders import ChartDataBuilder
from superset.utils import DTTM_ALIAS
def custom_axis_format(chart):
# 获取图表的数据
chart_data = ChartDataBuilder(chart).run_query().get_data()
# 获取X轴和Y轴的配置
x_axis_format = chart.get_extra().get('x_axis_format')
y_axis_format = chart.get_extra().get('y_axis_format')
# 格式化X轴和Y轴的数字
for row in chart_data:
row[DTTM_ALIAS] = row[DTTM_ALIAS].strftime(x_axis_format) if x_axis_format else row[DTTM_ALIAS]
row['y'] = format(row['y'], y_axis_format) if y_axis_format else row['y']
return chart_data
在上面的代码中,我们首先导入了 superset.charts.builders.ChartDataBuilder
类和 superset.utils.DTTM_ALIAS
常量。然后,我们定义了一个名为 custom_axis_format
的函数,该函数接收一个图表对象作为参数。
在函数中,我们首先获取图表的数据,并获取X轴和Y轴的格式化配置。然后,我们遍历图表数据,使用 strftime
函数将X轴的日期格式化为指定的格式,使用 format
函数将Y轴的数字格式化为指定的格式。
最后,我们返回格式化后的图表数据。
要应用这个自定义函数,你可以在Superset中的图表配置中的“Customize Results Processing”选项中添加以下代码:
custom_axis_format(this)
这样就可以自定义X轴和Y轴的数字格式化了。请注意,你需要根据自己的需求修改格式化的方式和代码逻辑。