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 ...
随机推荐
- linux shell每天一阅 -- 安装nginx以及apache
当然这个博客原代码是转载大神的... 自动安装Nginx脚本,采用case方式,选择方式,也可以根据实际需求改成自己想要的脚本mynginx.sh #!/bin/sh ###nginx install ...
- July 21st 2017 Week 29th Friday
If you want to fly too high in relation to the horizon forget. 要想飞得高,就该把地平线忘掉. Always keep our eyes ...
- SAP专家培训之Netweaver ABAP内存管理和内存调优最佳实践
培训者:SAP成都研究院开发人员Jerry Wang 1. Understanding Memory Objects in ABAP Note1: DATA itab WITH HEADER LINE ...
- ListView实现下拉刷新(一)建立头布局
一.效果演示 ListView实现下拉刷新,是很常见的功能.下面是一个模拟的效果,如下图: 效果说明:当往下拉ListView的时候 ...
- Django 模型中FileField字段
FileField¶ class FileField([upload_to=None, max_length=100, **options])¶ 一个上传文件的字段. 注意 FileField字段不支 ...
- BZOJ3238:[AHOI2013]差异(SAM)
Description Input 一行,一个字符串S Output 一行,一个整数,表示所求值 Sample Input cacao Sample Output 54 HINT 2<=N< ...
- 【转】Android单帧动画Rotate旋转
项目有一个需求,有一个刷新按钮,上面放着一个常见的静止的刷新圆圈,如下图: 一旦用户按了刷新按钮,需要让这个刷新圆圈转动起来,让用户感觉到程序还在运行着,而不是卡死了. 有两个思路,一是将这个图按照旋 ...
- ecshop 中如何禁用右键和F12
找到 网站根目录/themes/js/common.js,在最后加入如下代码: //禁用右键和F12 //方法一 document.oncontextmenu = function () { retu ...
- php 中输出字符串时怎么换行?
<?php //php 不同系统的换行 //不同系统之间换行的实现是不一样的 //linux 与unix中用 /n //MAC 用 /r //window 为了体现与linux不同 则是 /r/ ...
- phpcms利用表单向导创建留言板(可以回复)
这篇博客写的很详细,可跳转到如下链接: http://blog.aiwebcom.com/%E7%BD%91%E7%AB%99%E5%BB%BA%E8%AE%BE/phpcms/456.html 注: ...