You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在React Native中实现带输入文本的PieChart

带输入文本的PieChart实现代码

下面基于Chart.js实现可通过输入文本修改数据的饼图效果,代码可直接运行:

1. HTML结构

<div class="chart-container">
  <h3>可编辑数据饼图</h3>
  <!-- 饼图容器 -->
  <canvas id="pieChart"></canvas>
  <!-- 数据输入区域 -->
  <div class="input-group">
    <div class="input-item">
      <label>项目A:</label>
      <input type="number" class="data-input" data-index="0" value="30" min="0">
    </div>
    <div class="input-item">
      <label>项目B:</label>
      <input type="number" class="data-input" data-index="1" value="50" min="0">
    </div>
    <div class="input-item">
      <label>项目C:</label>
      <input type="number" class="data-input" data-index="2" value="20" min="0">
    </div>
  </div>
</div>

2. CSS样式

.chart-container {
  width: 400px;
  margin: 20px auto;
  padding: 20px;
  border: 1px solid #eee;
  border-radius: 8px;
}

#pieChart {
  height: 300px !important;
  margin-bottom: 20px;
}

.input-group {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.input-item {
  display: flex;
  align-items: center;
  gap: 10px;
}

.input-item label {
  width: 60px;
}

.data-input {
  flex: 1;
  padding: 6px;
  border: 1px solid #ddd;
  border-radius: 4px;
}

3. JavaScript逻辑

// 初始化饼图数据
const chartData = {
  labels: ['项目A', '项目B', '项目C'],
  datasets: [{
    label: '数据占比',
    data: [30, 50, 20],
    backgroundColor: [
      '#FF6384',
      '#36A2EB',
      '#FFCE56'
    ],
    hoverOffset: 4
  }]
};

// 初始化饼图
const ctx = document.getElementById('pieChart').getContext('2d');
const pieChart = new Chart(ctx, {
  type: 'pie',
  data: chartData,
  options: {
    responsive: true,
    plugins: {
      legend: {
        position: 'top',
      },
      tooltip: {
        callbacks: {
          label: function(context) {
            const total = context.dataset.data.reduce((a, b) => a + b, 0);
            const percentage = ((context.parsed / total) * 100).toFixed(1) + '%';
            return `${context.label}: ${context.parsed} (${percentage})`;
          }
        }
      }
    }
  }
});

// 监听输入框变化,实时更新饼图
document.querySelectorAll('.data-input').forEach(input => {
  input.addEventListener('input', function() {
    const index = parseInt(this.dataset.index);
    const value = parseInt(this.value) || 0;
    pieChart.data.datasets[0].data[index] = value;
    pieChart.update();
  });
});

使用说明

  1. 先引入Chart.js库,在HTML头部添加:
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
  1. 将上述HTML、CSS、JS代码整合到页面中,即可实现输入框修改数据、饼图实时更新的效果。
  2. 若需添加更多数据项,只需在HTML中增加对应输入框,同时修改chartData里的labels和data数组,补充对应背景色即可。

内容的提问来源于stack exchange,提问作者Samara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 08:56:07