在页面input中输入一个字符串,用柱状图和饼图显示每一字符出现的次数
这个的htmlzenmexie
你可以用 echarts来实现,通过修改传入的数据,使图表实时变化
以下是一个简单的 HTML 页面,包含一个输入框和两个图表,用于显示输入字符串中每个字符出现的次数的柱状图和饼图。
<!DOCTYPE html>
<html>
<head>
<title>字符出现次数统计</title>
<script src="https://cdn.jsdelivr.net/npm/echarts@4.9.0/dist/echarts.min.js"></script>
<style>
#charts {
display: flex;
justify-content: space-around;
margin-top: 50px;
}
#bar-chart, #pie-chart {
width: 400px;
height: 400px;
}
</style>
</head>
<body>
<h1>字符出现次数统计</h1>
<label for="input">请输入字符串:</label>
<input id="input" type="text">
<button onclick="drawCharts()">统计</button>
<div id="charts">
<div id="bar-chart"></div>
<div id="pie-chart"></div>
</div>
<script>
function drawCharts() {
// 获取输入字符串
let input = document.getElementById("input").value;
// 统计每个字符出现的次数
let count = {};
for (let i = 0; i < input.length; i++) {
let char = input.charAt(i);
if (count[char]) {
count[char]++;
} else {
count[char] = 1;
}
}
// 生成柱状图
let barChart = echarts.init(document.getElementById('bar-chart'));
let barOption = {
title: {
text: '字符出现次数柱状图'
},
tooltip: {},
xAxis: {
data: Object.keys(count)
},
yAxis: {},
series: [{
name: '次数',
type: 'bar',
data: Object.values(count)
}]
};
barChart.setOption(barOption);
// 生成饼图
let pieChart = echarts.init(document.getElementById('pie-chart'));
let pieOption = {
title: {
text: '字符出现次数饼图'
},
tooltip: {},
series: [{
name: '次数',
type: 'pie',
data: Object.entries(count).map(([char, count]) => ({name: char, value: count}))
}]
};
pieChart.setOption(pieOption);
}
</script>
</body>
</html>
在上面的代码中,我们使用了百度开源的 echarts.js 库来生成柱状图和饼图。在 HTML 中使用
该回答引用GPTᴼᴾᴱᴺᴬᴵ
可以使用JavaScript和HTML5的canvas元素来实现该功能。以下是一个简单的实现示例:
HTML代码:
<!DOCTYPE html>
<html>
<head>
<title>字符出现次数统计</title>
</head>
<body>
<h2>输入一个字符串:</h2>
<input type="text" id="input" />
<br><br>
<button onclick="drawChart()">生成统计图表</button>
<br><br>
<h3>柱状图</h3>
<canvas id="bar-chart"></canvas>
<h3>饼图</h3>
<canvas id="pie-chart"></canvas>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script src="script.js"></script>
</body>
</html>
JavaScript代码:
function drawChart() {
// 获取输入框中的字符串
var input = document.getElementById("input").value;
// 创建字符计数对象
var count = {};
// 遍历字符串,统计每个字符出现的次数
for (var i = 0; i < input.length; i++) {
var char = input.charAt(i);
if (count[char]) {
count[char]++;
} else {
count[char] = 1;
}
}
// 将字符计数对象转换为数组
var data = Object.keys(count).map(function(char) {
return {
char: char,
count: count[char]
};
});
// 按照出现次数排序
data.sort(function(a, b) {
return b.count - a.count;
});
// 绘制柱状图
var barChart = new Chart(document.getElementById("bar-chart"), {
type: 'bar',
data: {
labels: data.map(function(item) { return item.char; }),
datasets: [{
label: '出现次数',
data: data.map(function(item) { return item.count; }),
backgroundColor: 'rgba(54, 162, 235, 0.2)',
borderColor: 'rgba(54, 162, 235, 1)',
borderWidth: 1
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true
}
}]
}
}
});
// 绘制饼图
var pieChart = new Chart(document.getElementById("pie-chart"), {
type: 'pie',
data: {
labels: data.map(function(item) { return item.char; }),
datasets: [{
data: data.map(function(item) { return item.count; }),
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206,86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1
}]
},
options: {
title: {
display: true,
text: '字符出现次数饼图'
}
}
});
这是用到的绘制饼图的JavaScript代码,其中Chart是Chart.js这个库提供的构造函数,用于绘制各种类型的图表。在该代码中,我们先通过document.getElementById方法获取了一个id为"pie-chart"的元素,然后使用Chart构造函数传入该元素和一些参数,绘制出饼图。在这些参数中,我们使用了data.map方法,将输入的数据对象数组data映射为一个包含每个对象的char和count属性值的新数组,作为图表的标签和数据。同时,我们还设置了一些样式属性,比如背景色、边框色、边框宽度等。最后,我们在options属性中设置了一个title属性,用于显示图表的标题。