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 ...
随机推荐
- WBS 工作分解结构
WBS:工作分解结构(Work Breakdown Structure) 创建WBS:创建WBS是把项目 交付成果和项目工作分解成较小的,更易于管理的组成部分的过程. 主要用途WBS是一个描述思路的规 ...
- linux下如何用GDB调试c++程序
转:http://blog.csdn.net/wfdtxz/article/details/7368357 GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形 ...
- .NET Core学习之路
1.NET Core环境搭建 安装.NET Core: .NET Core 包括.NET Core Runtime 和 .NET Core SDK: NET Core = 应用运行依赖的 .NET C ...
- MongoDB排序记录
MongoDB sort()方法 要在MongoDB中排序文档,需要使用sort()方法. 该方法接受包含字段列表及其排序顺序的文档.使用指定排序顺序1和-1. 1用于升序,而-1用于降序. 语法 s ...
- js call、apply和bind
function add(a,b) { alert(a+b); } function sub(a,b) { alert(a-b); } add.call(sub,3,1); 例1 例子1中的意思就是用 ...
- BZOJ3503:[CQOI2014]和谐矩阵(高斯消元,bitset)
Description 我们称一个由0和1组成的矩阵是和谐的,当且仅当每个元素都有偶数个相邻的1.一个元素相邻的元素包括它本 身,及他上下左右的4个元素(如果存在). 给定矩阵的行数和列数,请计算并输 ...
- js 页面 json对象转数组
json_array(data); function json_array(data){ var len=eval(data).length; var arr=[]; for(var i=0;i< ...
- 将数组打印到txt文件中
用print_r 将数组打印到txt文件中. 1.function save_log($content='', $file='app') { $logDir = './logs'; $now ...
- 全局ajax的使用
一.ajax介绍 详细介绍请看:http://www.runoob.com/ajax/ajax-tutorial.html AJAX = Asynchronous JavaScript and XML ...
- [转]MFC子线程中更新控件内容的两种办法
一.概述 每个系统中都有线程(至少都有一个主线程),而线程最重要的作用就是并行处理,提高软件的并发率.针对界面来说,还能提高界面的响应能力.一般的,为了应用的稳定性,在数据处理等耗时操作会单独在一个线 ...