D3 基礎1

D3

D3.js (Data-Driven Documents) 是一個基于 JavaScript 的庫,用于生成動態、交互式數據可視化。它通過操作文檔對象模型 (DOM) 來生成數據驅動的圖形。官方網站是 https://d3js.org/

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>D3.js Tutorial</title><script src="https://d3js.org/d3.v7.min.js"></script></head><body><p>abc</p><script>// 選擇第一個匹配的元素d3.select("body").style("background-color", "lightblue");// 選擇所有匹配的元素d3.selectAll("p").style("color", "red");</script></body>
</html>

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>D3.js Tutorial</title><script src="https://d3js.org/d3.v7.min.js"></script></head><body><script>// 綁定數據并創建元素const dataset = [10, 20, 30, 40, 50];const svg = d3.select("body").append("svg").attr("width", 500).attr("height", 500);for (let i = 0; i < dataset.length; i++) {svg.append("circle").attr("cx", (i + 1) * 60).attr("cy", 250).attr("r", dataset[i]).attr("fill", "blue");}svg.selectAll("circle").data(dataset).enter().append("circle").attr("cx", (d, i) => (i + 1) * 60).attr("cy", 250).attr("r", (d) => d).attr("fill", "blue");</script></body>
</html>

縮放

const svg = d3.select("svg");
const zoom = d3.zoom().scaleExtent([1, 10]).on("zoom", zoomed);svg.call(zoom);function zoomed(event) {svg.attr("transform", event.transform);
}

拖拽

      const drag = d3.drag().on("start", dragstarted).on("drag", dragged).on("end", dragended);svg.selectAll("circle").call(drag);function dragstarted(event, d) {d3.select(this).raise().attr("stroke", "black");}function dragged(event, d) {d3.select(this).attr("cx", (d.x = event.x)).attr("cy", (d.y = event.y));}function dragended(event, d) {d3.select(this).attr("stroke", null);}

例1? 柱狀圖

以下值[30, 86, 168, 281, 303, 365],作為y的值,width=500,height=300,畫柱狀圖,柱子寬度均分width,每個柱子間距1。不需要坐標。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>D3.js Tutorial</title><script src="https://d3js.org/d3.v7.min.js"></script></head><body><script>// 綁定數據并創建元素const data = [30, 86, 168, 281, 303, 365];const width = 500;const height = 300;const barWidth = width / data.length;const svg = d3.select("body").append("svg").attr("width", width).attr("height", height);svg.selectAll("rect").data(data).enter().append("rect").attr("width", barWidth - 1).attr("height", (d) => d).attr("x", (d, i) => i * barWidth).attr("y", (d) => height - d).attr("fill", "teal");</script></body>
</html>

例2?折線

利用上面的數據畫折線

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>D3.js Tutorial</title><script src="https://d3js.org/d3.v7.min.js"></script></head><body><script>const data = [30, 86, 168, 281, 303, 365];const width = 500;const height = 300;const x = d3.scaleLinear().domain([0, data.length - 1]).range([0, width]);const y = d3.scaleLinear().domain([0, d3.max(data)]).range([height, 0]);const line = d3.line().x((d, i) => x(i)).y((d) => y(d));const svg = d3.select("body").append("svg").attr("width", width).attr("height", height);svg.append("path").datum(data).attr("fill", "none").attr("stroke", "steelblue").attr("stroke-width", 1.5).attr("d", line);</script></body>
</html>

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

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

相關文章

基線檢查:Windows安全基線.【手動 || 自動】

基線定義 基線通常指配置和管理系統的詳細描述&#xff0c;或者說是最低的安全要求&#xff0c;它包括服務和應用程序設置、操作系統組件的配置、權限和權利分配、管理規則等。 基線檢查內容 主要包括賬號配置安全、口令配置安全、授權配置、日志配置、IP通信配置等方面內容&…

Python -- Linux中的Matplotlib圖中無法顯示中文 (中文為方框)

目的 用matplotlib生成的圖中文無法正常顯示 方法 主要原因: 沒找到字體 進入windows系統的C:\Windows\Fonts目錄, 復制自己想要的字體 粘貼到Linux服務器中對應python文件所處的文件夾內 設置字體: 設置好字體文件的路徑在需要對字體設置的地方設置字體 效果 中文正常顯…

快速理解類的加載過程

當程序主動使用某個類時&#xff0c;如果該類還未加載到內存中&#xff0c;則系統會通過如下三個步驟來對該類進行初始化&#xff1a; 1.加載&#xff1a;將class文件字節碼內容加載到內存中&#xff0c;并將這些靜態數據轉換成方法區的運行時數據結構&#xff0c;然后生成一個…

搭建 Elasticsearch 集群:完整教程

本文將詳細介紹如何在 Linux 環境下搭建一個 Elasticsearch 集群&#xff0c;涵蓋環境準備、配置優化、服務啟動等多個環節。 一、環境準備 創建安裝目錄 mkdir /es cd /es解壓 Elasticsearch 安裝包 tar -xzf elasticsearch-7.10.1-linux-x86_64.tar.gz -C /es配置環境變量 編…

寶塔-docker拉取寶塔鏡像,并運行寶塔鏡像

寶塔-拉取寶塔鏡像&#xff0c;并運行鏡像 第1步&#xff1a;查詢 docker search btpanel/baota此docker鏡像由堡塔安全官方發布&#xff0c;鏡像版本為寶塔面板9.2.0正式版和9.0.0_lts 穩定版&#xff0c;鏡像會隨著寶塔面板更新。 目前支持x86_64和arm架構可供下載使用 版本…

使用 Valgrind 檢測 C 程序中的內存問題 -基礎教程

內存泄漏是許多 C 語言程序中的常見問題&#xff0c;它不僅會導致程序性能下降&#xff0c;甚至可能讓系統崩潰。為了檢測和修復這些問題&#xff0c;Valgrind 是一個非常強大的工具&#xff0c;它可以幫助我們分析 C 程序中的內存使用情況&#xff0c;檢測內存泄漏、越界訪問、…

窮舉vs暴搜vs深搜vs回溯vs剪枝專題一>子集

題目&#xff1a; 兩個方法本質就是決策樹的畫法不同 方法一解析&#xff1a; 代碼&#xff1a; class Solution {private List<List<Integer>> ret;//返回結果private List<Integer> path;//記錄路徑&#xff0c;注意返回現場public List<List<Int…

leecode雙指針部分題目

leecode雙指針部分題目 1. 驗證回文串2. 判斷子序列3. 兩數之和 II - 輸入有序數組4. 盛最多水的容器5. 三數之和 1. 驗證回文串 如果在將所有大寫字符轉換為小寫字符、并移除所有非字母數字字符之后&#xff0c;短語正著讀和反著讀都一樣。則可以認為該短語是一個 回文串 。 …

Web 應用如何使用sqlite?使用 sql.js 實現前端 SQLite 數據庫操作

前言 在 Web 應用開發中&#xff0c;前端數據處理的重要性日益增加。為了實現更高效的前端數據管理&#xff0c;特別是在處理結構化數據時&#xff0c;sql.js 提供了一個出色的解決方案。sql.js 是將 SQLite 數據庫編譯為 JavaScript 的庫&#xff0c;允許開發者在瀏覽器環境中…

docker 安裝 mysql8.0容器外無法連接

文章目錄 概要問題描述解決方案其他命令 概要 主要是mysql5.7和mysql8.0的兼容性問題。 排查了很久 其實就是配置文件的一句話的事情 感覺mysql8.0更為嚴謹 這樣可能是考慮杜絕一些漏洞吧 問題描述 在容器內 netstat -an | grep 3306 都不行 在容器外 netstat -an | grep 2…

TCP協議簡單分析和握手揮手過程

TCP介紹 TCP是可靠的傳輸層協議&#xff0c;建立連接之前會經歷3次握手的階段。 確認機制&#xff1a;接受方 收到數據之后會向 發送方 回復ACK重傳機制&#xff1a;發送方 在一定時間內沒有收到 接收方的ACK就會重新發送 握手目的&#xff1a;與端口建立連接 TCP的三次握手 …

VisualStudio vsix插件自動加載

本文介紹如何在Visual Studio擴展中實現PackageRegistration&#xff0c;包括設置UseManagedResourcesOnly為true&#xff0c;允許背景加載&#xff0c;并針對C#、VB、F#項目提供自動裝載&#xff0c;附官方文檔鏈接。增加以下特性即可…… [PackageRegistration(UseManagedRe…

opencv所有常見函數

一、opencv圖像操作 二、opencv圖像的數值運算 三、opencv圖像的放射變換 四、opencv空間域圖像濾波 五、圖像灰度化與直方圖 六、形態學圖像處理 七、閾值處理與邊緣檢測 八、輪廓和模式匹配

【Excel】單元格分列

目錄 分列&#xff08;新手友好&#xff09; 1. 選中需要分列的單元格后&#xff0c;選擇 【數據】選項卡下的【分列】功能。 2. 按照分列向導提示選擇適合的分列方式。 3. 分好就是這個樣子 智能分列&#xff08;進階&#xff09; 高級分列 Tips&#xff1a; 新手推薦基…

【STM32練習】基于STM32的PM2.5環境監測系統

一.項目背景 最近為了完成老師交付的任務&#xff0c;遂重制了一下小項目用STM32做一個小型的環境監測系統。 項目整體示意框圖如下&#xff1a; 二.器件選擇 單片機&#xff08;STM32F103&#xff09;數字溫濕度模塊&#xff08;DHT11&#xff09;液晶顯示模塊&#xff08;0.8…

《開源數據:開啟信息共享與創新的寶藏之門》

《開源數據&#xff1a;開啟信息共享與創新的寶藏之門》 一、開源數據概述&#xff08;一&#xff09;開源數據的定義&#xff08;二&#xff09;開源數據的發展歷程 二、開源數據的優勢&#xff08;一&#xff09;成本效益優勢&#xff08;二&#xff09;靈活性與可定制性&…

ReactPress最佳實踐—搭建導航網站實戰

Github項目地址&#xff1a;https://github.com/fecommunity/easy-blog 歡迎Star。 近期&#xff0c;阮一峰在科技愛好者周刊第 325 期中推薦了一款開源工具——ReactPress&#xff0c;ReactPress一個基于 Next.js 的博客和 CMS 系統&#xff0c;可查看 demo站點。&#xff08;…

2024,大模型殺進“決賽圈”

Henry Chesbrough在著作《通過技術創新盈利勢在必行》中&#xff0c;曾提出過一個創新的“漏斗模型”。開放式創新一開始鼓勵百花齊放&#xff0c;但最終只有10%的技術能夠通過這個漏斗&#xff0c;成功抵達目標市場target market&#xff0c;進入到商業化與產業化的下一個階段…

STM8單片機學習筆記·GPIO的片上外設寄存器

目錄 前言 IC基本定義 三極管基礎知識 單片機引腳電路作用 STM8GPIO工作模式 GPIO外設寄存器 寄存器含義用法 CR1&#xff1a;Control Register 1 CR2&#xff1a;Control Register 2 ODR&#xff1a;Output Data Register IDR&#xff1a;Input Data Register 賦值…

頁面加載速度優化策略:提升用戶體驗的關鍵

文章目錄 前言一、為什么需要優化頁面加載速度&#xff1f;二、前端優化技術三、后端優化策略四、構建與部署優化五、案例研究&#xff1a;實際效果展示結語 前言 在當今快節奏的互聯網環境中&#xff0c;頁面加載速度不僅是用戶體驗的重要組成部分&#xff0c;更是影響網站性…