前幾天完成了資料庫測驗的最后的可視化階段,以及多表聯動等功能,對這段時間遇到的問題和學到的東西做個總結整理吧
關于資料的可視化主要學習于百度的開源Examples - Apache ECharts,做了以下幾個的案例
圓柱圖


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>圓柱圖</title>
<!-- 引入剛剛下載的 ECharts 檔案 -->
<script src="https://www.cnblogs.com/jyt604743080/archive/2022/10/15/JS/echarts.js"></script>
<script src="https://www.cnblogs.com/jyt604743080/archive/2022/10/15/JS/jquery-3.1.1.js"></script><!--js檔案在最后都有哦-->
<script src="https://cdn.jsdelivr.net/npm/echarts-gl/dist/echarts-gl.min.js"></script>
</head>
<body>
<div id="main" >
<!-- 為 ECharts 準備一個具備大小(寬高)的 DOM -->
<div id="areaone" style="width: 2000px;height:1000px;"></div>
<script type="text/javascript">
var goodsNamedata = https://www.cnblogs.com/jyt604743080/archive/2022/10/15/[];//定義陣列用來接受后臺的資料,陣列名隨意啦
var salesMountdata = https://www.cnblogs.com/jyt604743080/archive/2022/10/15/[];
var salesMountdata0 = [];
var url = "Servletselect";
<!--使用ajax動態獲取資料,將獲取的資料放到陣列中-->
$.ajax({
async: false,
type: "GET",
url: url,
dataType: 'json',
contentType: "application/json;charset=UTF-8",
success: function(result){
console.log(result);
for (var i = 0; i < result.length; i++) {
goodsNamedata.push(result[i].day_id);
salesMountdata.push(result[i].round);
salesMountdata0.push(result[i].cnt);
console.log(result[i].cnt)
}
}
});
//下面就是官網的資料了進行一些簡單的修改就可以了
var myChartone = echarts.init(document.getElementById('areaone'));
// 指定圖表的配置項和資料
var optionone = {
title: {
text: '柱狀圖'
},
tooltip: {},
legend: {
data: ['sum','mony'],
orient: 'horizontal',
itemGap: 40,
textStyle: {
color: 'red',
fontSize: '20px',
fontWeight: 700
}
},
xAxis: {
data: goodsNamedata//x軸
},
yAxis: {//y軸不用設定(2d)
},
series: [{
name: 'sum',
type: 'bar',
data: salesMountdata//資料
},
{
name: 'mony',
type: 'bar',
data: salesMountdata0//資料
}]
};
myChartone.setOption(optionone);
</script>
</div>
</body>
</html>
線型圖:
線型圖的話和圓柱圖基本沒有太大的區別,思路一致!

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>條形圖</title>
<!-- 引入剛剛下載的 ECharts 檔案 -->
<script src="https://www.cnblogs.com/jyt604743080/archive/2022/10/15/JS/echarts.js"></script>
<script src="https://www.cnblogs.com/jyt604743080/archive/2022/10/15/JS/jquery-3.1.1.js"></script>
<script src="https://cdn.jsdelivr.net/npm/echarts-gl/dist/echarts-gl.min.js"></script>
</head>
<body>
<div id="main" >
<!-- 為 ECharts 準備一個具備大小(寬高)的 DOM -->
<div id="areaone1" style="width: 2000px;height:1000px;"></div>
<script type="text/javascript">
var goodsNamedata =https://www.cnblogs.com/jyt604743080/archive/2022/10/15/ [];
var salesMountdata =https://www.cnblogs.com/jyt604743080/archive/2022/10/15/ [];
var salesMountdata0 = [];
var url = "Servletselect";
<!--使用ajax動態獲取資料,將獲取的資料放到陣列中-->
$.ajax({
async: false,
type: "GET",
url: url,
dataType: 'json',
contentType: "application/json;charset=UTF-8",
success: function(result){
console.log(result);
for (var i = 0; i < result.length; i++) {
goodsNamedata.push(result[i].day_id);
salesMountdata.push(result[i].round);
salesMountdata0.push(result[i].cnt);
console.log(result[i].cnt)
}
}
});
var chartDom = document.getElementById('areaone1');
var myChart = echarts.init(chartDom);
var option;
// prettier-ignore
const data =https://www.cnblogs.com/jyt604743080/archive/2022/10/15/ []
for(var i=0;i<goodsNamedata.length;i++)
{
data.push([goodsNamedata[i],salesMountdata[i]]);
// console.log(data);
}
const data1 = []
for(var i=0;i<goodsNamedata.length;i++)
{
data1.push([goodsNamedata[i],salesMountdata0[i]]);
// console.log(data);
}
const dateList = data.map(function (item) {
return item[0];
});
const valueList = data1.map(function (item) {
return item[1];
});
option = {
// Make gradient line here
visualMap: [
{
show: false,
type: 'continuous',
seriesIndex: 0,
min: 0,
max: 400
},
{
show: false,
type: 'continuous',
seriesIndex: 1,
dimension: 0,
min: 0,
max: dateList.length - 1
}
],
title: [
{
left: 'center',
text: '獲取利潤'
},
{
top: '55%',
left: 'center',
text: '獲取數量'
}
],
tooltip: {
trigger: 'axis'
},
xAxis: [
{
data: dateList
},
{
data: dateList,
gridIndex: 1
}
],
yAxis: [
{},
{
gridIndex: 1
}
],
grid: [
{
bottom: '60%'
},
{
top: '60%'
}
],
series: [
{
type: 'line',
showSymbol: false,
data: valueList
},
{
type: 'line',
showSymbol: false,
data: valueList,
xAxisIndex: 1,
yAxisIndex: 1
}
]
};
option && myChart.setOption(option);
</script>
</div>
</body>
</html>
餅圖(沒有x軸y軸啊)

const data = https://www.cnblogs.com/jyt604743080/archive/2022/10/15/genData(50);
option = {
title: {
text: '同名數量統計',
subtext: '純屬虛構',
left: 'center'
},
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b} : {c} ({d}%)'
},
legend: {
type: 'scroll',
orient: 'vertical',
right: 10,
top: 20,
bottom: 20,
data: data.legendData
},
series: [
{
name: '姓名',
type: 'pie',
radius: '55%',
center: ['40%', '50%'],
data: data.seriesData,
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
};
function genData(count) {
// prettier-ignore
const nameList = [
'趙', '錢', '孫', '李', '周', '吳', '鄭', '王', '馮', '陳', '褚', '衛', '蔣', '沈', '韓', '楊', '朱', '秦', '尤', '許', '何', '呂', '施', '張', '孔', '曹', '嚴', '華', '金', '魏', '陶', '姜', '戚', '謝', '鄒', '喻', '柏', '水', '竇', '章', '云', '蘇', '潘', '葛', '奚', '范', '彭', '郎', '魯', '韋', '昌', '馬', '苗', '鳳', '花', '方', '俞', '任', '袁', '柳', '酆', '鮑', '史', '唐', '費', '廉', '岑', '薛', '雷', '賀', '倪', '湯', '滕', '殷', '羅', '畢', '郝', '鄔', '安', '常', '樂', '于', '時', '傅', '皮', '卞', '齊', '康', '伍', '余', '元', '卜', '顧', '孟', '平', '黃', '和', '穆', '蕭', '尹', '姚', '邵', '湛', '汪', '祁', '毛', '禹', '狄', '米', '貝', '明', '臧', '計', '伏', '成', '戴', '談', '宋', '茅', '龐', '熊', '紀', '舒', '屈', '項', '祝', '董', '梁', '杜', '阮', '藍', '閔', '席', '季', '麻', '強', '賈', '路', '婁', '危'
];
const legendData = https://www.cnblogs.com/jyt604743080/archive/2022/10/15/[];
const seriesData = https://www.cnblogs.com/jyt604743080/archive/2022/10/15/[];
for (var i = 0; i < count; i++) {
var name =
Math.random() > 0.65
? makeWord(4, 1) + '·' + makeWord(3, 0)
: makeWord(2, 1);
legendData.push(name);
seriesData.push({
name: name,
value: Math.round(Math.random() * 100000)
});
}
return {
legendData: legendData,
seriesData: seriesData
};
function makeWord(max, min) {
const nameLen = Math.ceil(Math.random() * max + min);
const name = [];
for (var i = 0; i < nameLen; i++) {
name.push(nameList[Math.round(Math.random() * nameList.length - 1)]);
}
return name.join('');
}
}
3D圖

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://www.cnblogs.com/jyt604743080/archive/2022/10/15/JS/echarts.js"></script>
<script src="https://www.cnblogs.com/jyt604743080/archive/2022/10/15/JS/jquery-3.1.1.js"></script>
<script src="https://cdn.jsdelivr.net/npm/echarts-gl/dist/echarts-gl.min.js"></script>
</head>
<body>
<!-- 為ECharts準備一個具備大小(寬高)的Dom -->
<div id="arean" style="width: 2000px;height:1000px;"></div>
<script type="text/javascript">
var day_iddata = https://www.cnblogs.com/jyt604743080/archive/2022/10/15/[];//編號
var buy_nbrdata = [];//賣出方代碼
var incntdata = [];//買入數量
var inrounddata=[];//買入金額
var outcntdata=[];//賣出數量
var outrounddata=[];//賣出金額
var lirundata=[];//銷售利潤
var url ="Servletselect4";
<!--使用ajax動態獲取資料,將獲取的資料放到陣列中-->
$.ajax({
async: false,
type: "GET",
url: url,
dataType: 'json',
contentType: "application/json;charset=UTF-8",
success: function(result){
for (var i = 0; i < result.length; i++) {
day_iddata.push(result[i].day_id);
buy_nbrdata.push(result[i].buy_nbr);
incntdata.push(result[i].incnt);
inrounddata.push(result[i].inround);
outcntdata.push(result[i].outcnt);
outrounddata.push(result[i].outround);
lirundata.push(result[i].lirun);
}
}
});
var chartDom = document.getElementById('arean');
var myChart = echarts.init(chartDom);
var option;
var data =https://www.cnblogs.com/jyt604743080/archive/2022/10/15/[]
// console.log(data);
// console.log("*****************8");
//將后臺資料加入
for(var i=0;i<day_iddata.length;i++)
{
data.push([day_iddata[i],buy_nbrdata[i],lirundata[i]]);
// console.log(data);
}
// var data=https://www.cnblogs.com/jyt604743080/archive/2022/10/15/[[day_iddata[0],buy_nbrdata[0],lirundata[0]],[day_iddata[1],buy_nbrdata[1],lirundata[1]]]
// console.log("**********************");
console.log(data);
option = {
tooltip: {},
visualMap: {
max: 20,
inRange: {
color: [
'#313695',
'#4575b4',
'#74add1',
'#abd9e9',
'#e0f3f8',
'#ffffbf',
'#fee090',
'#fdae61',
'#f46d43',
'#d73027',
'#a50026'
]
}
},
xAxis3D: {
type: 'category',
},
yAxis3D: {
type: 'category',
},
zAxis3D: {
type: 'value'
},
grid3D: {
boxWidth: 250,
boxDepth: 100,
light: {
main: {
intensity: 1.2
},
ambient: {
intensity: 0.3
}
}
},
series: [
{
type: 'bar3D',
data: data.map(function (item) {
return {
value: [item[0], item[1], item[2]]
};
}),
shading: 'color',
label: {
show: false,
fontSize: 16,
borderWidth: 1
},
itemStyle: {
opacity: 1
},
//設定放置顏色
emphasis: {
label: {
fontSize: 20,
color: '#fbc2eb'
},
itemStyle: {
color: '#a6c0fe'
}
}
}
]
};
option && myChart.setOption(option);
</script>
</body>

課堂測驗—資料可視化(多表聯動) - O_O似曾相識 - 博客園 (cnblogs.com)
鏈接:https://pan.baidu.com/s/1dvhEKclaqHhM-PbtYwhZIQ?pwd=0921
提取碼:0921
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/514309.html
標籤:其他
