可视化作品大于等于2 类图表,图表能够进行联动(connect 联动与数据联动), 能够与图表进行交互(最低要求是鼠标与tooltip 的交互),异步数据加载、必须多属性数据
时间: 2024-04-21 18:28:41 浏览: 45
一个满足要求的可视化作品需要综合考虑多个因素,包括数据类型、图表类型、数据交互方式等等。以下是一个简单的示例作品,展示了多个图表之间的联动和交互:
![可视化作品示例](https://i.imgur.com/bf8vbC4.png)
该作品由三个图表组成,分别是柱状图、散点图和折线图。它们之间的联动和交互如下:
1. 数据联动:三个图表的数据来自同一数据源,它们之间进行了数据联动。例如,选择柱状图中的一个柱子,会自动过滤出该柱子对应的数据,然后在散点图和折线图中进行展示。
2. Connect联动:柱状图和散点图之间进行了Connect联动,即选择柱状图中的一个柱子,会高亮显示该柱子对应的散点图数据。
3. 鼠标交互:鼠标悬停在柱状图、散点图或折线图上,会显示tooltip,展示详细的数据信息。
4. 异步数据加载:这个示例作品使用了mock数据,可以通过ajax异步加载数据。
以下是示例代码:
HTML代码:
```html
<div id="chart1" style="width: 600px;height:400px;"></div>
<div id="chart2" style="width: 600px;height:400px;"></div>
<div id="chart3" style="width: 600px;height:400px;"></div>
```
JavaScript代码:
```javascript
// 初始化echarts实例
var chart1 = echarts.init(document.getElementById('chart1'));
var chart2 = echarts.init(document.getElementById('chart2'));
var chart3 = echarts.init(document.getElementById('chart3'));
// 异步加载数据
$.ajax({
url: 'data.json',
success: function (data) {
// 绑定数据
chart1.setOption({
title: {
text: '柱状图'
},
xAxis: {
data: data.categories
},
yAxis: {},
series: [{
name: '数据1',
type: 'bar',
data: data.data1
}, {
name: '数据2',
type: 'bar',
data: data.data2
}]
});
chart2.setOption({
title: {
text: '散点图'
},
xAxis: {},
yAxis: {},
series: [{
name: '数据1',
type: 'scatter',
data: data.scatterData,
symbolSize: function (data) {
return Math.sqrt(data[2]);
},
label: {
emphasis: {
show: true,
formatter: function (param) {
return param.data[3];
},
position: 'top'
}
},
itemStyle: {
normal: {
shadowBlur: 10,
shadowColor: 'rgba(120, 36, 50, 0.5)',
shadowOffsetY: 5,
color: new echarts.graphic.RadialGradient(0.4, 0.3, 1, [{
offset: 0,
color: 'rgba(251, 118, 123, 1)'
}, {
offset: 1,
color: 'rgba(204, 46, 72, 1)'
}])
}
}
}]
});
chart3.setOption({
title: {
text: '折线图'
},
tooltip: {},
xAxis: {
data: data.categories
},
yAxis: {},
series: [{
name: '数据1',
type: 'line',
data: data.data1
}, {
name: '数据2',
type: 'line',
data: data.data2
}]
});
// Connect联动
echarts.connect([chart1, chart2]);
// 数据联动
chart1.on('click', function (params) {
var scatterData = [];
for (var i = 0; i < data.scatterData.length; i++) {
if (params.name === data.scatterData[i][3]) {
scatterData.push(data.scatterData[i]);
}
}
chart2.setOption({
series: [{
data: scatterData
}]
});
chart3.setOption({
series: [{
data: scatterData
}]
});
});
}
});
```
需要注意的是,以上代码仅供参考,实际使用时需要根据自己的数据格式和需求进行修改。
阅读全文