React實現自定義圖表(線狀+柱狀)

要使用 React 繪制一個結合線狀圖和柱狀圖的圖表,你可以使用 react-chartjs-2 庫,它是基于 Chart.js 的 React 封裝。以下是一個示例代碼,展示如何實現這個需求:

1. 安裝依賴

首先,你需要安裝 react-chartjs-2chart.js

npm install react-chartjs-2 chart.js

2. 創建圖表組件

接下來,創建一個 React 組件來繪制圖表:

import React from 'react';
import { Chart as ChartJS, CategoryScale, LinearScale, BarElement, LineElement, PointElement, Title, Tooltip, Legend } from 'chart.js';
import { Bar, Line } from 'react-chartjs-2';ChartJS.register(CategoryScale,LinearScale,BarElement,LineElement,PointElement,Title,Tooltip,Legend
);const CombinedChart = () => {const data = {labels: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],datasets: [{type: 'bar',label: '銷售目標量',data: [120, 150, 180, 200, 220, 250, 280, 300, 320, 350, 380, 400],backgroundColor: 'rgba(54, 162, 235, 0.6)',borderColor: 'rgba(54, 162, 235, 1)',borderWidth: 1,yAxisID: 'y1',borderRadius: 4, // 為柱狀圖添加圓角},{type: 'bar',label: '銷售完成量',data: [100, 140, 170, 190, 210, 240, 270, 290, 310, 340, 370, 390],backgroundColor: 'rgba(75, 192, 192, 0.6)',borderColor: 'rgba(75, 192, 192, 1)',borderWidth: 1,yAxisID: 'y1',borderRadius: 4, // 為柱狀圖添加圓角},{type: 'line',label: '完成率',data: [83, 93, 94, 95, 95, 96, 96, 97, 97, 97, 97, 97.5],borderColor: 'rgba(255, 99, 132, 1)',backgroundColor: 'rgba(255, 99, 132, 0.2)',yAxisID: 'y2',tension: 0.4, // 調整曲線的光滑度pointStyle: 'circle', // 設置數據點的樣式pointRadius: 6, // 設置數據點的半徑pointHoverRadius: 8, // 設置鼠標懸停時數據點的半徑},],};const options = {responsive: true,plugins: {legend: {position: 'top',display: true,labels: {color: '#333', // 設置圖例文字顏色},},tooltip: {mode: 'index',intersect: false,backgroundColor: '#fff', // 設置提示框的背景顏色titleColor: '#000', // 設置提示框標題顏色bodyColor: '#000', // 設置提示框主體內容顏色borderColor: '#ccc', // 設置提示框邊框顏色borderWidth: 1, // 設置提示框邊框寬度caretSize: 5, // 設置提示框箭頭大小caretPadding: 10, // 設置提示框箭頭與內容的間距},},scales: {x: {ticks: {color: '#555', // 設置X軸刻度文字顏色},grid: {color: '#e5e5e5', // 設置X軸網格顏色},},y1: {type: 'linear',display: true,position: 'left',title: {display: true,text: '銷售數量',color: '#333', // 設置Y軸標題顏色},ticks: {color: '#555', // 設置Y軸刻度文字顏色},grid: {color: '#e5e5e5', // 設置Y軸網格顏色},},y2: {type: 'linear',display: true,position: 'right',title: {display: true,text: '完成率 (%)',color: '#333', // 設置Y軸標題顏色},ticks: {color: '#555', // 設置Y軸刻度文字顏色},grid: {drawOnChartArea: false,color: '#e5e5e5', // 設置Y軸網格顏色},},},};return (<div style={{ position: 'relative', height: '300px' }}><Bar data={data} options={options} /></div>);
};export default CombinedChart;

3. 使用組件

在你的應用中,你可以像這樣使用 CombinedChart 組件:

import React from 'react';
import ReactDOM from 'react-dom';
import CombinedChart from './CombinedChart';function App() {return (<div className="App"><h1>銷售數據圖表</h1><CombinedChart /></div>);
}ReactDOM.render(<App />, document.getElementById('root'));

4. 運行應用

確保你的開發服務器正在運行,然后你應該能夠看到一個結合了柱狀圖和線狀圖的圖表,左邊是銷售數量,右邊是完成率,下面是月份。

解釋

  • data.labels: X 軸的標簽,表示月份。
  • datasets: 包含三個數據集,兩個柱狀圖數據集(銷售目標量和銷售完成量)和一個線狀圖數據集(完成率)。
  • yAxisID: 用于指定數據集使用哪個 Y 軸。y1 是左邊的銷售數量軸,y2 是右邊的完成率軸。
  • options.scales: 配置了兩個 Y 軸,分別用于銷售數量和完成率。

效果圖

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/896100.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896100.shtml
英文地址,請注明出處:http://en.pswp.cn/news/896100.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

線程與進程的深入解析及 Linux 線程編程

在操作系統中&#xff0c;進程和線程是進行并發執行的兩種基本單位。理解它們的區別和各自的特點&#xff0c;能夠幫助開發者更好地進行多任務編程&#xff0c;提高程序的并發性能。本文將探討進程和線程的基礎概念&#xff0c;及其在 Linux 系統中的實現方式&#xff0c;并介紹…

全面指南:使用JMeter進行性能壓測與性能優化(中間件壓測、數據庫壓測、分布式集群壓測、調優)

目錄 一、性能測試的指標 1、并發量 2、響應時間 3、錯誤率 4、吞吐量 5、資源使用率 二、壓測全流程 三、其他注意點 1、并發和吞吐量的關系 2、并發和線程的關系 四、調優及分布式集群壓測&#xff08;待仔細學習&#xff09; 1.線程數量超過單機承載能力時的解決…

springboot整合mybatis-plus【詳細版】

目錄 一&#xff0c;簡介 1. 什么是mybatis-plus2.mybatis-plus特點 二&#xff0c;搭建基本環境 1. 導入基本依賴&#xff1a;2. 編寫配置文件3. 創建實體類4. 編寫controller層5. 編寫service接口6. 編寫service層7. 編寫mapper層 三&#xff0c;基本知識介紹 1. 基本注解 T…

HTTP 常見狀態碼技術解析(應用層)

引言 HTTP 狀態碼是服務器對客戶端請求的標準化響應標識&#xff0c;屬于應用層協議的核心機制。其采用三位數字編碼&#xff0c;首位數字定義狀態類別&#xff0c;后兩位細化具體場景。 狀態碼不僅是服務端行為的聲明&#xff0c;更是客戶端處理響應的關鍵依據。本文將從協議規…

Unity中的鍵位KeyCode

目錄 主要用途 檢測按鍵事件&#xff1a; 處理鍵盤輸入&#xff1a; 基本鍵位 常用鍵&#xff1a; 字母鍵&#xff1a; 數字鍵&#xff1a; 功能鍵&#xff1a; 方向鍵&#xff1a; 控制鍵&#xff1a; 鼠標鍵&#xff1a; 其他特殊鍵&#xff1a; 代碼示例 按下…

高考或者單招考試需要考物理這科目

問題&#xff1a;幫忙搜索一下以上學校哪些高考或者單招考試需要考物理這科目的 回答&#xff1a; 根據目前獲取的資料&#xff0c;明確提及高考或單招考試需考物理的學校為湖南工業職業技術學院&#xff0c;在部分專業單招時要求選考物理&#xff1b;其他學校暫未發現明確提…

【設計模式】 代理模式(靜態代理、動態代理{JDK動態代理、JDK動態代理與CGLIB動態代理的區別})

代理模式 代理模式是一種結構型設計模式&#xff0c;它提供了一種替代訪問的方法&#xff0c;即通過代理對象來間接訪問目標對象。代理模式可以在不改變原始類代碼的情況下&#xff0c;增加額外的功能&#xff0c;如權限控制、日志記錄等。 靜態代理 靜態代理是指創建的或特…

Redis 限流

Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) public interface AccessLimit {/*** 限制次數*/int count() default 15;/*** 時間窗口&#xff0c;單位為秒*/int seconds() default 60; }Aspect Component public class AccessLimitAspect {private static …

Android Coil3縮略圖、默認占位圖placeholder、error加載錯誤顯示,Kotlin(1)

Android Coil3縮略圖、默認占位圖placeholder、error加載錯誤顯示&#xff0c;Kotlin&#xff08;1&#xff09; implementation("io.coil-kt.coil3:coil-core:3.1.0")implementation("io.coil-kt.coil3:coil-network-okhttp:3.1.0") <uses-permission …

DeepSeek 助力 Vue 開發:打造絲滑的 鍵盤快捷鍵(Keyboard Shortcuts)

前言&#xff1a;哈嘍&#xff0c;大家好&#xff0c;今天給大家分享一篇文章&#xff01;并提供具體代碼幫助大家深入理解&#xff0c;徹底掌握&#xff01;創作不易&#xff0c;如果能幫助到大家或者給大家一些靈感和啟發&#xff0c;歡迎收藏關注哦 &#x1f495; 目錄 Deep…

uniapp引入uview組件庫(可以引用多個組件)

第一步安裝 npm install uview-ui2.0.31 第二步更新uview npm update uview-ui 第三步在main.js中引入uview組件庫 第四步在uni.scss中引入import "uview-ui/theme.scss"樣式 第五步在文件中使用組件

Jmeter進階篇(34)如何解決jmeter.save.saveservice.timestamp_format=ms報錯?

問題描述 今天使用Jmeter完成壓測執行,然后使用命令將jtl文件轉換成html報告時,遇到了報錯! 大致就是說jmeter里定義了一個jmeter.save.saveservice.timestamp_format=ms的時間格式,但是jtl文件中的時間格式不是標準的這個ms格式,導致無法正常解析。對于這個問題,有如下…

React 低代碼項目:網絡請求與問卷基礎實現

&#x1f35e;吐司問卷&#xff1a;網絡請求與問卷基礎實現 Date: February 10, 2025 Log 技術要點&#xff1a; HTTP協議XMLHttpRequest、fetch、axiosmock.js、postmanWebpack devServer 代理、craco.js 擴展 webpackRestful API 開發要點&#xff1a; 搭建 mock 服務 …

安裝海康威視相機SDK后,catkin_make其他項目時,出現“libusb_set_option”錯誤的解決方法

硬件&#xff1a;雷神MIX G139H047LD 工控機 系統&#xff1a;ubuntu20.04 之前運行某項目時&#xff0c;處于正常狀態。后來由于要使用海康威視工業相機&#xff08;型號&#xff1a;MV-CA013-21UC&#xff09;&#xff0c;便下載了并安裝了該相機的SDK&#xff0c;之后運行…

人工智能之自動駕駛技術體系

自動駕駛技術體系 自動駕駛技術是人工智能在交通領域的重要應用&#xff0c;旨在通過計算機視覺、傳感器融合、路徑規劃等技術實現車輛的自主駕駛。自動駕駛不僅能夠提高交通效率&#xff0c;還能減少交通事故和環境污染。本文將深入探討自動駕駛的技術體系&#xff0c;包括感…

淺談模組-相機鬼像

一&#xff0e;前言 在成像中&#xff0c;我們常常會遇到肉眼觀測的真實世界中&#xff0c;不存在的異常光影出現在畫面中&#xff0c;并伴有各種顏色&#xff0c;我們將這個物體稱為鬼像。某些鬼像可能會對圖像產生美感的體驗&#xff0c;但是大多數的鬼像都會對圖像的質量以…

vmware虛擬機Ubuntu Desktop系統怎么和我的電腦相互復制文件、內容

1、先安裝vmware workstation 17 player&#xff0c;然后再安裝Ubuntu Desktop虛擬機&#xff0c;然后再安裝vmware tools&#xff0c;具體可以參考如下視頻&#xff1a; VMware虛擬機與主機實現文件共享&#xff0c;其實一點也不難_嗶哩嗶哩_bilibili 2、本人親自試過了&…

Spring Boot項目中解決跨域問題(四種方式)

目錄 一&#xff0c;跨域產生的原因二&#xff0c;什么情況下算跨域三&#xff0c;實際演示四&#xff0c;解決跨域的方法 1&#xff0c;CrossOrigin注解2&#xff0c;添加全局過濾器3&#xff0c;實現WebMvcConfigurer4&#xff0c;Nginx解決跨域5&#xff0c;注意 開發項目…

Oracle JDK、Open JDK zulu下載地址

一、Oracle JDK https://www.oracle.com/java/technologies/downloads/ 剛進去是最新的版本&#xff0c;往下滑可以看到老版本 二、Open JDK的 Azul Zulu https://www.azul.com/downloads/ 直接可以選版本等選項卡

軟件測試:1、單元測試

1. 單元測試的基本概念 單元&#xff08;Unit&#xff09;&#xff1a;軟件系統的基本組成單位&#xff0c;可以是函數、模塊、方法或類。 單元測試&#xff08;Unit Testing&#xff09;&#xff1a;對軟件單元進行的測試&#xff0c;驗證代碼的正確性、規范性、安全性和性能…