Superset二次开发之柱状图自定义初始化时Data Zoom数据缩放值

Superset项目柱状图来自Echarts

首先Echarts实现柱状图数据缩放初始化默认值的效果

核心代码 

设置Datazoom 的start 和end

myChart.showLoading();
$.get(ROOT_PATH + '/data/asset/data/obama_budget_proposal_2012.list.json',function (obama_budget_2012) {myChart.hideLoading();option = {tooltip: {trigger: 'axis',axisPointer: {type: 'shadow',label: {show: true}}},toolbox: {show: true,feature: {mark: { show: true },dataView: { show: true, readOnly: false },magicType: { show: true, type: ['line', 'bar'] },restore: { show: true },saveAsImage: { show: true }}},calculable: true,legend: {data: ['Growth', 'Budget 2011', 'Budget 2012'],itemGap: 5},grid: {top: '12%',left: '1%',right: '10%',containLabel: true},xAxis: [{type: 'category',data: obama_budget_2012.names}],yAxis: [{type: 'value',name: 'Budget (million USD)',axisLabel: {formatter: function (a) {a = +a;return isFinite(a) ? echarts.format.addCommas(+a / 1000) : '';}}}],dataZoom: [{show: true,start: 80,end: 100},{type: 'inside',start: 80,end: 100},{show: true,yAxisIndex: 0,filterMode: 'empty',width: 30,height: '80%',showDataShadow: false,left: '93%'}],series: [{name: 'Budget 2011',type: 'bar',data: obama_budget_2012.budget2011List},{name: 'Budget 2012',type: 'bar',data: obama_budget_2012.budget2012List}]};myChart.setOption(option);}
);

Superset 实现过程

superset-frontend\plugins\plugin-chart-echarts\src\Timeseries\Regular\Bar\controlPanel.tsx

新增函数createDataZoomControl  && DEFAULT_FORM_DATA 新增xAxisBoundsZoom

const {logAxis,minorSplitLine,truncateYAxis,yAxisBounds,xAxisBoundsZoom,zoomable,xAxisLabelRotation,orientation,
} = DEFAULT_FORM_DATA;--------------------------------------------------
function createDataZoomControl(): ControlSetRow[] {return [[{name: 'zoomable',config: {type: 'CheckboxControl',label: t('Data Zoom'),default: zoomable,renderTrigger: true,description: t('Enable data zooming controls'),},},],[{name: 'x_axis_bounds_zoom',config: {type: 'BoundsControl',label: t('Data Zoom Axis Bounds'),renderTrigger: true,default: xAxisBounds,description: t('Bounds for the axis when Data Zoom is enabled. When left empty, the bounds are ' +'dynamically defined based on the min/max of the data. Note that ' +"this feature will only expand the axis range. It won't " +"narrow the data's extent.",),visibility: ({ controls }: ControlPanelsContainerProps) =>Boolean(controls?.zoomable?.value),},},],];
}

修改 controlPanelSections controlSetRows 的逻辑

controlSetRows: [...seriesOrderSection,['color_scheme'],...showValueSection,...createDataZoomControl(),// [//   {//     name: 'zoomable',//     config: {//       type: 'CheckboxControl',//       label: t('Data Zoom'),//       default: zoomable,//       renderTrigger: true,//       description: t('Enable data zooming controls'),//     },//   },// ],

superset-frontend\plugins\plugin-chart-echarts\src\Timeseries\types.ts

新增 xAxisBoundsZoom

export type EchartsTimeseriesFormData = QueryFormData 新增以下内容xAxisBoundsZoom: [number | undefined | null, number | undefined | null];

superset-frontend\plugins\plugin-chart-echarts\src\Timeseries\constants.ts

export const DEFAULT_FORM_DATA: EchartsTimeseriesFormData = 新增 xAxisBoundsZoom

xAxisBoundsZoom: [null, null],

核心逻辑

superset-frontend\plugins\plugin-chart-echarts\src\Timeseries\transformProps.ts

EchartsTimeseriesFormData = { ...DEFAULT_FORM_DATA, ...formData }; 内容里新增以下代码
xAxisBoundsZoom,--------------------------------------------
let [minZoom, maxZoom] = (xAxisBoundsZoom || []).map(parseYAxisBound);
if ((contributionMode === 'row' || isAreaExpand) && stack) {if (minZoom === undefined) minZoom = 0;if (maxZoom === undefined) maxZoom = 100;
} else if (logAxis && min === undefined && minPositiveValue !== undefined) {minZoom = calculateLowerLogTick(minPositiveValue);
}-------------------------------------------------
dataZoom: zoomable? [{type: 'slider',// start: TIMESERIES_CONSTANTS.dataZoomStart,start: minZoom,// end: TIMESERIES_CONSTANTS.dataZoomEnd,end: maxZoom,bottom: TIMESERIES_CONSTANTS.zoomBottom,},]: [],

效果展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/16913.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 文件操作指南:使用 open 和 with open 实现高效读写

🍀 前言 博客地址: CSDN:https://blog.csdn.net/powerbiubiu 👋 简介 本系列文章主要分享文件操作,了解如何使用 Python 进行文件的读写操作,介绍常见文件格式的读取和写入方法,包括TXT、 CS…

aws lakeformation工作流程和权限管理逻辑

lakeformation在IAM权限模型之外提供独立的更细粒度的权限,控制数据湖数据的访问 能够提供列、行和单元格级别的精细控制 lakeformation的目的是要取代s3和iam策略,主要功能为 数据摄入,LF可以将不同类型的数据统一管理安全管理&#xff0…

小程序内使用路由

一:使用组件 1)创建组件 2)在需要的页面的json/app.json可实现局部使用和全局使用 在局部的话,对象内第一层,window配置也是第一层,而在全局配置也是在第一层,window在window对象内.第二层.内部执行遍历不一样. 3)页面使用 上述所写可实现在页面内使用组件.效果是页面内可以将…

十四天学会Vue——Vue核心(理论+实战)中篇(第二天)

声明:是接着上篇讲的哦,感兴趣可以去看一看~ 这里一些代码就不写了,为了缩减代码量,大家知道就可以了: Vue.config.productionTip false //阻止 vue 在启动时生成生产提示。热身小tips,可以安装这个插件&…

阿里通义千问大模型AI接入火车头自动生成内容插件

插件特点: 可以根据采集的关键词,自动生成文章可自定义提示词 也可以分析标题重写一个标题2个提问标签 如有需要可自由增加对话标签自己可以设置TXT关键词导入,自动采集生成 安装说明: 1.需要python环境 ,具体可以…

新楚文化知网收录文学艺术类期刊投稿

《新楚文化》是由国家新闻出版总署批准,湖北省文学艺术界联合会主管,湖北今古传奇传媒集团有限公司主办的正规期刊。主要刊登文化、文学、艺术类稿件;包括传统文化、非遗、历史文化、地方文化、中外友好文化交流、文学作品研究、艺术研究等方…

在C++中自定义命名空间,在命名空间中定义string变量,同时定义一个函数实现单词逆置

代码 #include <iostream> #include <cstring> using namespace std; namespace my_space {string s;void reverse(string s);//定义逆置函数 } using namespace my_space; void my_space::reverse(string s){int lens.size();int i0;int jlen-1;while(i<j){//…

恶意退市潮?

一张A4纸&#xff0c;炸出一池鱼。史上&#xff08;最&#xff09;严新规&#xff0c;这一拳打到了&#xff08;违规减持&#xff09;上。 新规算是对新国九条的补充&#xff0c;更是给大股东们上紧箍咒。那市场买账吗&#xff1f;昨晚爆出19家董监高亲属&#xff08;违规&…

wireshark抓包,丢包分析?

前言 我们都知道&#xff0c;一般流量分析设备都支持pcap回放离线分析的功能&#xff0c;但如果抓的pcap丢了包&#xff0c;会影响最终安全测试的效果。比如说竞测现场需要提供pcap包测试恶意文件的检测功能&#xff0c;如果pcap中丢包&#xff0c;可能会导致文件还原失败&…

高稳定数显芯片防干扰抗噪数码屏驱动高亮LED驱动IC-VK16K33A/AA 最大13×3的按键扫描

产品型号&#xff1a;VK16K33A/AA 产品品牌&#xff1a;永嘉微电/VINKA 封装形式&#xff1a;SOP28/SSOP28 原厂&#xff0c;工程服务&#xff0c;技术支持&#xff01; 概述 VK16K33A/AA是一种带按键扫描接口的数码管或点阵LED驱动控制专用芯片&#xff0c;内部集成有数据…

2024系统架构师软考考题考点回忆版

2024年5月25日系统架构师软考试题/考点梳理 选择题 (75道单选题) 软件测试(P205) 静态测试:是被测程序不运行,只依靠分析和检查源程序的语句、结构、过程来检查程序是否有错误。动态测试:运行被测试程序,对得到的结果与预期的结果进行比较分析,同时分析运行效率和健壮…

RK3568笔记二十七:LPRNet车牌识别

若该文为原创文章&#xff0c;转载请注明原文出处。 记录自训练并在RK3568上部署。 一、介绍 LPRNet的Pytorch实现&#xff0c;一种高性能和轻量级的车牌识别框架。完全适用于中国车牌识别&#xff08;Chinese License Plate Recognition&#xff09;及国外车牌识别&#xf…

张大哥笔记:赚钱高手养成计划---如何将一份时间产生N份收入?

我们常说的赚钱的四种境界有哪些&#xff1f; 1.靠体力挣钱 2.靠技能挣钱 3.靠知识挣钱 4.靠平台钱生钱 所以对应的收入的模式就会是下面4种模式&#xff1a; 1.一份时间卖1次 2.一份时间卖N次 3.一份时间溢价卖N次 4.购买他人时间为自己所用 时间对于每个人都是相同的…

书生·浦语大模型全链路开源体系-作业1

视频链接&#xff1a;书生浦语大模型全链路开源体系_哔哩哔哩_bilibili 1. LLM发展 LLM是近年来人工智能领域的一个重要发展方向。大型语言模型的历史可以追溯到2017年,当时OpenAI推出了GPT-1(Generative Pre-trained Transformer)模型,这是一个基于Transformer架构的语言生成…

使用OpenVINO™.CSharp.API.Extensions.PaddleOCR NuGet Package快速实现OCR文本识别

PP-OCR是PaddleOCR自研的实用的超轻量OCR系统&#xff0c;可以实现端到端的图像文本检测。为了在C#平台实现使用OpenVINO™部署PP-OCR模型实现文本识别&#xff0c;让更多开发者快速上手PP-OCR项目&#xff0c;基于此&#xff0c;封装了OpenVINO.CSharp.API.Extensions.PaddleO…

【C语言】数据指针地址的取值、赋值、自增操作避坑

【C语言】数据指针的取值、赋值、自增操作避坑 文章目录 指针地址指针自增指针取值、赋值附录&#xff1a;压缩字符串、大小端格式转换压缩字符串浮点数压缩Packed-ASCII字符串 大小端转换什么是大端和小端数据传输中的大小端总结大小端转换函数 指针地址 请看下列代码&#…

嵩山为什么称为五岳之尊

在此之前&#xff0c;人们心目中的五岳之尊一般是东岳泰山。自此以后&#xff0c;观点一定会改变&#xff1a;五岳之尊是中岳嵩山&#xff01;且听我慢慢道来。 首先将二者进行一下对比—— 中与东的对比&#xff0c;嵩山居中&#xff0c;泰山居东。东方是太阳升起的地方&#…

谷粒商城实战(029 业务-订单支付模块-支付宝支付2)

Java项目《谷粒商城》架构师级Java项目实战&#xff0c;对标阿里P6-P7&#xff0c;全网最强 总时长 104:45:00 共408P 此文章包含第305p-第p310的内容 代码编写 前端代码 这里使用的是jsp 在这里引用之前配置的各种支付信息 在AlipayConfig.java里 这里是调用阿里巴巴写…

AI大模型日报#0527:豆包大模型披露评测成绩、天工AI日活超100万、AI初创集体跳槽OpenAI

导读&#xff1a;AI大模型日报&#xff0c;爬虫LLM自动生成&#xff0c;一文览尽每日AI大模型要点资讯&#xff01;目前采用“文心一言”&#xff08;ERNIE 4.0&#xff09;、“零一万物”&#xff08;Yi-Large&#xff09;生成了今日要点以及每条资讯的摘要。欢迎阅读&#xf…

PyQt5-新手避坑指南(持续更新)

文章目录 一&#xff0e;前言二&#xff0e;开发环境三&#xff0e;坑1.程序没有详细报错就退出了2.qrc资源文件的使用3.QLabel文字自动换行4.图片自适应大小5.checkbox自定义样式后✓不见了6.多线程 四&#xff0e;记录 一&#xff0e;前言 本篇博客整理了一些初学者容易犯的…