在页面input中输入一个字符串,用柱状图和饼图显示每一字符出现的次数

在页面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属性,用于显示图表的标题。