使用ECharts实现在线商场销售数据分析 安装ECharts库 确保你有Node.js和npm安装: npm install -g npm npm install echarts 创建HTML文件 新建一个HTML文件,包含必要的元标签和脚本: <!DOCTYPE html> <html> <head>在线商场销售数据分析</title> <style> .container { width: 120px; margin: 20px auto; padding: 20px; } .chart-container { display: flex; gap: 20px; flex-wrap: wrap; } </style> </head> <body> <div class="container"> <h1>在线商场销售数据分析</h1> <div class="chart-container"> <!-- 销售数量图表 --> <div id="salesVolumeChart"></div> <!-- 销售额图表 --> <div id="salesValueChart"></div> </div> </div> <script src="https://cdn.jsdelivr.net/npm/echarts@latest/dist/echarts.min.js"...
使用ECharts实现在线商场销售数据分析
安装ECharts库
确保你有Node.js和npm安装:
npm install -g npm npm install echarts
创建HTML文件
新建一个HTML文件,包含必要的元标签和脚本:
<!DOCTYPE html>
<html>
<head>在线商场销售数据分析</title>
<style>
.container {
width: 120px;
margin: 20px auto;
padding: 20px;
}
.chart-container {
display: flex;
gap: 20px;
flex-wrap: wrap;
}
</style>
</head>
<body>
<div class="container">
<h1>在线商场销售数据分析</h1>
<div class="chart-container">
<!-- 销售数量图表 -->
<div id="salesVolumeChart"></div>
<!-- 销售额图表 -->
<div id="salesValueChart"></div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/echarts@latest/dist/echarts.min.js"></script>
</body>
</html>
准备销售数据
创建一个包含多个商品的数据数组,每个商品包含多个时间点的销售数量和销售额:
// 假设数据如下(示例数据)
const salesData = [
{
id: '商品A',
name: '手机',
data: [
{ time: '2023-01', sales: 500, value: 800 },
{ time: '2023-02', sales: 700, value: 10500 },
{ time: '2023-03', sales: 600, value: 900 },
{ time: '2023-04', sales: 800, value: 12000 }
]
},
{
id: '商品B',
name: '平板',
data: [
{ time: '2023-01', sales: 400, value: 700 },
{ time: '2023-02', sales: 600, value: 900 },
{ time: '2023-03', sales: 500, value: 800 },
{ time: '2023-04', sales: 300, value: 500 }
]
}
];
初始化图表
在HTML文件中添加两个图表容器,分别对应销售数量和销售额:
<div id="salesVolumeChart"></div> <div id="salesValueChart"></div>
配置图表样式
在<script>标签中添加以下代码,配置每个图表:
// 销售数量图表
const salesVolumeChart = echarts.init(document.getElementById('salesVolumeChart'));
// 销售额图表
const salesValueChart = echarts.init(document.getElementById('salesValueChart'));
// 销售数量图表配置
salesVolumeChart.config({ {
text: '销售数量趋势'
},
tooltip: {
formatter: function (value) {
return `${value.toFixed()}件`;
}
},
xAxis: {
data: ['2023-01', '2023-02', '2023-03', '2023-04']
},
yAxis: {
axisLabel: {
formatter: function (value) {
return `${value.toFixed()}件`;
}
}
}
});
// 销售额图表配置
salesValueChart.config({ {
text: '销售额趋势'
},
tooltip: {
formatter: function (value) {
return `${value.toFixed(2)}元`;
}
},
xAxis: {
data: ['2023-01', '2023-02', '2023-03', '2023-04']
},
yAxis: {
axisLabel: {
formatter: function (value) {
return `${value.toFixed(2)}元`;
}
}
}
});
添加数据到图表
根据数据源,逐个添加数据系列到每个图表中,这里假设数据已经在salesData中准备好:
// 销售数量图表
salesVolumeChart.data = [
{
name: '手机',
data: salesData[].data.map(item => item.sales)
},
{
name: '平板',
data: salesData[1].data.map(item => item.sales)
}
];
salesVolumeChart.update();
// 销售额图表
salesValueChart.data = [
{
name: '手机',
data: salesData[].data.map(item => item.value)
},
{
name: '平板',
data: salesData[1].data.map(item => item.value)
}
];
salesValueChart.update();
添加图例和样式
为了美化图表,添加图例并设置样式:
// 销售数量图表
salesVolumeChart.option({
legend: {
data: ['手机', '平板'],
formatter: function (name) {
return '<span style="font-weight:bold;">' + name + '</span>';
}
},
color: ['#2ecc71', '#e74c3c']
});
// 销售额图表
salesValueChart.option({
legend: {
data: ['手机', '平板'],
formatter: function (name) {
return '<span style="font-weight:bold;">' + name + '</span>';
}
},
color: ['#9b59b6', '#f1c40f']
});
添加交互功能
配置点击事件,显示单品信息:
// 销售数量图表
salesVolumeChart.on('click', function (event) {
const series = event.series;
const data = series.data[series.index];
const point = data[data.length - 1]; // 假设点击的是最后一个数据点
alert(`单品: ${series.name}\n销量: ${point.value}件`);
});
// 销售额图表
salesValueChart.on('click', function (event) {
const series = event.series;
const data = series.data[series.index];
const point = data[data.length - 1]; // 假设点击的是最后一个数据点
alert(`单品: ${series.name}\n销售额: ${point.value}元`);
});
数据预处理(示例)
确保数据正确整理:
// 减少显示的时间点数量
const timePoints = ['2023-01', '2023-02', '2023-03', '2023-04'];
const processedData = salesData.map(product => {
const aggregatedData = product.data.reduce((acc, item, index) => {
if (index < timePoints.length) {
acc[timePoints[index]] = {
sales: acc[timePoints[index]] ? acc[timePoints[index]].sales + item.sales : item.sales,
value: acc[timePoints[index]] ? acc[timePoints[index]].value + item.value : item.value
};
}
return acc;
}, {});
return {
name: product.name,
data: Object.entries(aggregatedData).map(([time, item]) => ({
time,
sales: item.sales,
value: item.value
}))
};
});
// 更新图表数据
salesVolumeChart.data = processedData.map(product => ({
name: product.name,
data: product.data.map(item => item.sales)
}));
salesValueChart.data = processedData.map(product => ({
name: product.name,
data: product.data.map(item => item.value)
}));
salesVolumeChart.update();
salesValueChart.update();
CSS样式调整
为了更好的展示效果,添加CSS样式:
.echarts-container {
background: #f4f4f4;
padding: 20px;
border-radius: 8px;
box-shadow: 0 0 10px rgba(,,,.1);
}
.echarts-graph {
width: 100%;
height: 300px;
}
完整代码汇总
将所有代码整合到HTML文件中:
<!DOCTYPE html>
<html>
<head>在线商场销售数据分析</title>
<style>
.container {
width: 120px;
margin: 20px auto;
padding: 20px;
}
.chart-container {
display: flex;
gap: 20px;
flex-wrap: wrap;
}
.echarts-container {
background: #f4f4
上一篇:VPN软件下载与安装指南
相关文章







