Highchart 饼图联动
感觉好久没有更新博客了,最近一直忙着毕业论文,紧接着就开始搭建数据库,实在抽不出时间写。
正好趁着做数据库,写一写关于Highchart里两个饼图之间的互动。
用到的数据比较大,我也懒得修饰了,涉及到两个pie图的div,分别是 pie_container 和 signature_container。
先说明一下画 signature_container 时为了和 pie_container 互动,定义了一个函数,画图的数据利用 ajax 读取:
function signature_pie(cancer_type){
var data_arr = [
{name: "gene", y: 0.4},
{name: "protein", y: 0.2},
{name: "lncRNA", y: 0.1},
{name: "miRNA", y: 0.1},
{name: "mutation", y: 0.1},
{name: "methylation", y: 0.1}
];
var options = {
chart: {
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false,
type: 'pie',
},
title: {
text: 'signature type statistics',
style:{
fontSize: "20px"
},
y: 10,
x:-5
},
tooltip: {
pointFormat: 'Cohort precentage: <b>{point.percentage:.1f}%</b>'
},
credits: {
enabled: false
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
events: {
click: function(event){
var signature_type = event.point.name;
document.getElementById("choose_signature_type").innerHTML = "<b>" + signature_type + "</b>";
}
},
dataLabels: {
enabled: false,
color: "black",
format: '<b>{point.name}</b>: {point.percentage:.1f} %',
}
}
},
series: [{
names: 'signature stat',
data: data_arr
}]
};
if(cancer_type == "ALL"){
Highcharts.chart('signature_container', options);
} else {
$.ajax({
url: '../data/test.txt',
dataType: 'text',
type: 'GET',
async: false,
success: function(data) {
var lines = data.split('\n');
for(var index = 1; index < (lines.length - 1); index++){
var info = lines[index].split('\t');
if(info[0] == cancer_type){
for(var i = 1; i < (info.length-1); i++){
options.series[0].data[i-1].y = parseFloat(info[i]);
}
Highcharts.chart('signature_container', options);
break;
}
}
}
});
}
}
下面是 pie_container 的 options:
var options = {
chart: {
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false,
type: 'pie',
},
title: {
text: 'cancer type statistics',
style:{
fontSize: "20px"
},
y: 10,
x:-5
},
tooltip: {
pointFormat: 'Type is <b>{point.type}<b><br/>Cohort precentage: <b>{point.percentage:.1f}%</b>'
},
credits: {
enabled: false
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
events: {
click: function(event){
var cancer_type = event.point.name;
document.getElementById("choose_cancer_type").innerHTML = "<b>" + cancer_type + "</b>";
//利用signature_pie()函数,根据对应数据重新画一个pie图
javascript:signature_pie(cancer_type);
var index = event.point.index;
options.series[0].data[index]['selected'] = 'true';
options.series[0].data[index]['sliced'] = 'true';
Highcharts.chart('pie_container', options);
options.series[0].data[index]['selected'] = '';
options.series[0].data[index]['sliced'] = '';
}
},
dataLabels: {
enabled: false,
color: "black",
format: '<b>{point.name}</b>: {point.percentage:.1f} %',
}
}
},
series: [{
names: 'cancer stat',
data: [
{name: 'ACC', y: 0.00602188825469969, type: 'A'},
{name: 'BLCA', y: 0.0293239775881028, type: 'A'},
{name: 'BRCA', y: 0.0532544378698225, type: 'B'},
{name: 'CESC', y: 0.011520134052469, type: 'B'},
{name: 'CHOL', y: 0.00314185474158245, type: 'B'},
{name: 'COADREAD', y: 0.0395873697439388, type: 'A'},
{name: 'COAD', y: 0.029585798816568, type: 'D'},
{name: 'DLBC', y: 0.00382258993559198, type: 'D'},
{name: 'ESCA', y: 0.0112059485783107, type: 'D'},
{name: 'GBMLGG', y: 0.0756663350264439, type: 'C'},
{name: 'GBM', y: 0.0327800178038435, type: 'C'},
{name: 'HNSC', y: 0.0432005026967587, type: 'A'},
{name: 'KICH', y: 0.00837827931088653, type: 'B'},
{name: 'KIPAN', y: 0.0774990836257004, type: 'D'},
{name: 'KIRC', y: 0.0473896423522019, type: 'C'},
{name: 'KIRP', y: 0.0251348379326596, type: 'A'},
{name: 'LAML', y: 0.0116772267895481, type: 'A'},
{name: 'LGG', y: 0.0444048803476986, type: 'C'},
{name: 'LIHC', y: 0.0315232759072106, type: 'B'},
{name: 'LUAD', y: 0.0424674032570561, type: 'C'},
{name: 'LUSC', y: 0.0116248625438551, type: 'C'},
{name: 'OV', y: 0.043671780907996, type: 'A'},
{name: 'PAAD', y: 0.0190082211865738, type: 'D'},
{name: 'PCPG', y: 0.0109441273498455, type: 'D'},
{name: 'PRAD', y: 0.0450332512960151, type: 'D'},
{name: 'READ', y: 0.0123055977378646, type: 'A'},
{name: 'SARC', y: 0.0142430748285071, type: 'C'},
{name: 'SKCM', y: 0.0388542703042363, type: 'B'},
{name: 'STAD', y: 0.0378069853903754, type: 'A'},
{name: 'STES', y: 0.047494370843588, type: 'D'},
{name: 'TGCT', y: 0.00942556422474734, type: 'C'},
{name: 'THCA', y: 0.0492747551971514, type: 'A'},
{name: 'THYM', y: 0.00774990836257004, type: 'B'},
{name: 'UCEC', y: 0.0151332670052888, type: 'D'},
{name: 'UCS', y: 0.00429386814682934, type: 'A'},
{name: 'UVM', y: 0.00555061004346232, type: 'C'},
]
}]
}
Highchart 饼图联动的更多相关文章
- 帆软报表(finereport) 饼图联动
饼图联动:点击饼图1,饼图2和饼图3显示饼图1的关联数据,接着点击饼图2,饼图3显示饼图2的关联数据,点击上方清除级联,饼图则恢复默认展示状态 下面以上图示例效果为例,说明制作过程. 1.为每个饼图准 ...
- echarts 地图的背景色和各省颜色配置以及地图饼图联动
myChart.on(ecConfig.EVENT.MAP_SELECTED, function (param) { var selected = param.selected; var str = ...
- Html的Table与Echart的饼图实现联动效果
功能描述: 单击Table中的某个单元格,Echart的饼图加载相关的数据,鼠标悬停在Echarts饼图中的某一块中,Table显示与Echarts饼图相关的数据. 例:楼宇经济概要显示每一个季度所有 ...
- HighChart报表之饼图
个人认为HighChart做报表还是很不错的,从报表的样式还是性能都是很不错的选择. 1.新建一个html页面,命名为:ReportTest.html <script type="te ...
- 进一步封装highchart,打造自己的图表插件:jHighChart.js
Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表.支持的图表类型有曲线图.区域图.柱状图.饼状图.散状点图和综合 ...
- 百度推出的echarts,制表折线图柱状图饼图等的超级工具(转)
一.简介: 1.绘制数据图表,有了它,想要网页上绘制个折线图.柱状图,从此easy. 2.使用这个百度的echarts.js插件,是通过把图片绘制在canvas上在显示在页面上. 官网对echarts ...
- highchart.js的使用
highchart.js是一个很实用的图表插件,涵盖柱状图.曲线图,区域图.3D图.饼图.散列图.混合图等等,功能很强大. 首先去官网下载最新版highchart.js插件,中文网地址:http:// ...
- 【highchart】经典问题
摘要 记录遇到的一些问题和解决方案 时差 数据容量 多表联动 1. 时差 问题描述 highcharts 默认是标准 UTC 时间,而国内默认是东八区时间,所以会有8个小时的时差 解决方法 使用hig ...
- Echarts数据可视化series-pie饼图,开发全解+完美注释
全栈工程师开发手册 (作者:栾鹏) Echarts数据可视化开发代码注释全解 Echarts数据可视化开发参数配置全解 6大公共组件详解(点击进入): title详解. tooltip详解.toolb ...
随机推荐
- 优秀 Java 程序员写代码的风格
往 期 精 彩 推 荐 [1]Java Web技术经验总结 [2]15个顶级Java多线程面试题及答案,快来看看吧 [3]面试官最喜欢问的十道java面试题 [4]从零讲JAVA ,给你一条清晰 ...
- [原]零基础学习视频解码之安装ffmpeg
写在文章前面:ffmpeg是一个开源的编解码框架,拥有很强大的功能.但是对于如果使用其来做开发呈现着严重两极分化,大神们讨论着高深的问题,大多数像我这样的小白连门都进不去.最近无意间领会了如何入门,现 ...
- (转)tcp的半连接与完全连接队列
队列及参数 tcp-sync-queue-and-accept-queue-small.jpg server端的半连接队列(syn队列) 在三次握手协议中,服务器维护一个半连接队列,该队列为每个客 ...
- AngularJS中页面传参方法
1.基于ui-router的页面跳转传参 (1) 用ui-router定义路由,比如有两个页面,一个页面(producers.html)放置了多个producers,点击其中一个目标,页面跳转到对应的 ...
- 读书笔记之JavaScript中的数据类型
JavaScript严格意义上分为ECMAScript.DOM.BOM.ECMAScript是一门真正意义上的语言,独立于浏览器,浏览器只是它的一个宿主环境.DOM(文档对象模型),为ECMAScri ...
- 如何遍历一个JSON对象的属性值???
当遇到一个JSON格式的对象时,不知道它有多少个属性,也不知道有什么属性,该如何遍历它的属性及其属性值呢??? 还是使用Java语言还是很像的,使用for语句. var obj = data[i]; ...
- 【[AHOI2005]病毒检测】
\(Trie\) 树+搜索 我用的是\(dfs\) 首先对于将所有的RNA片段都建到\(Trie\)树里去,之后来匹配那个模板串就好了 如果是匹配的位置是字母,那么我们就继续往下匹配 如果是\(?\) ...
- PHP中将字符串转化为整数(int) intval() printf()
int <?php $foo = "1"; // $foo 是字符串类型 $bar = (int)$foo; // $bar 是整型 ?> intval <?ph ...
- 关于Ftp服务器
步骤/方法 首先在本地机器上创建一个用户!这些用户是用来登录到FTP的!我的电脑右键->管理->本地用户和组->用户->“右键”新建用户->输入用户名和密码再点创建就行了 ...
- C#一键显示及杀死占用端口号进程
private void t_btn_kill_Click(object sender, EventArgs e) { int port; bool b = int.TryParse(t_txt_gu ...