數據可視化【九】單向數據流交互

在這里插入圖片描述

我們使用一下上上篇博客的代碼。

例如我們想要當鼠標點擊水果的時候會出現黑色的框,再點擊一下黑色的框就會消失。

首先,我們應該給組件添加點擊事件:
fruitBowl.js

gruopAll.on('click', d => onClick(d.id));

這個on函數第一個參數是事件的類型,例如這里就是點擊事件click,后一個就是點擊這個組件的時候所調用的函數。

fruitBowl.js

const onClick = id => {gruopAll.select('circle').attr('stroke-width', '5px').attr('stroke', d=> d.id===id? selectedColor(d): 'none');};

然后在這個函數中我們設置所點擊的圓形的邊框。

為了實現單擊出現邊框,雙擊邊框消失,我們給對象添加一個flag屬性

const makeFruit = (type, i) =>( {type,id : i,flag : false
} );let fruits = d3.range(5).map((d,i) => makeFruit('apple', i) );

然后通過selectedColor()函數返回一個顏色:
fruitBowl.js

const selectedColor = d => {if(d.flag === false){d.flag = true;return 'black';} else{d.flag = false;return 'none';}}

這個函數的邏輯就是,如果這個水果之前已經被選定(已經單擊)了,那么就返回none消除邊框,如果沒有選定,那么就返回一個顏色,并且更改flag屬性。

通過上面的代碼我們就可以實現單擊出現邊框,雙擊邊框消失的效果。

vizhub代碼:https://vizhub.com/Edward-Elric233/166c74b3db394cc78cffac9eaae609ec

而如果我們想要實現的是當鼠標滑過某個水果的時候出現邊框,當鼠標移出某個水果的時候邊框消失的效果的時候邊框消失的效果的話我們可以添加mouseovermouseout事件。

fruitBowl.js

gruopAll.on('mouseover', d => setSelectedFruit(d.id)).on('mouseout', ()=> setSelectedFruit(null));

這里的setSelectedFruit函數和上面的onClick函數的效果類似,不同的地方在于這里只需要簡單的根據id設置邊框顏色即可,不要根據flag屬性進行判斷。因為當鼠標移出組件的時候邊框會自動消失。

fruitBowl.js

const selectedColor = d => {// if(d.flag === false){// d.flag = true;return 'black';// } else{// 	d.flag = false;//   return 'none';// }}const setSelectedFruit = id => {gruopAll.select('circle').attr('stroke-width', '5px').attr('stroke', d=> d.id===id? selectedColor(d): 'none');}

vizhub代碼:https://vizhub.com/Edward-Elric233/bc3fff96533d40f0bb915bc7fedde895

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

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

相關文章

數據庫原理及應用【四】數據庫管理系統

查詢優化 數據庫管理系統中非常重要的一部分。 代數優化 按照一定的規則將語句變化成關系代數以后進行優化 操作優化 對代數優化后的查詢樹使用比較好的方法進行查詢。 主要是對連接運算進行優化 嵌套循環歸并掃描索引優化哈希連接 恢復機制 備份(完整備份差…

數據庫原理及應用【五】安全性和完整性約束

數據庫一致性被破壞: 系統故障許多用戶的并發訪問人為破壞事務本身不正確 保護數據庫一致性的方法: 視圖/查詢修改訪問控制 普通用戶擁有資源特權的用戶DBA 數據庫的安全問題 身份驗證 口令物理設備 GRANT CONNECT TO John IDENTIFIED BY 123456…

遞歸式復雜度求解

代換法 猜測復雜度驗證是否滿足遞歸式(使用歸納法)找到常數應該滿足的條件針對基本情況,常數足夠大時總是成立的 需要注意的是,我們猜測的復雜度有可能不滿足遞歸式,這個時候就要通過減去一些低階項來使得歸納成立。…

斐波那契數列計算

定義 斐波那契數列: F[n]{0,n01,n1F[n?1]F[n?2],elseF[n] \begin{cases} 0,n0 \\ 1,n1\\ F[n-1]F[n-2],else \end{cases} F[n]??????0,n01,n1F[n?1]F[n?2],else? 樸素計算法 根據遞歸式F[n]F[n?1]F[n?2]F[n]F[n-1]F[n-2]F[n]F[n?1]F[n?2]進行計算…

P、NP、NP完全問題、NP難問題

可以在多項式時間內求解的問題稱為易解的,而不能在多項式時間內求解的問題稱為難解的。 P類問題:多項式類型,是一類能夠用(確定性的)算法在多項式的時間內求解的判定問題。 只有判定問題才屬于P 不可判定問題&#…

數據可視化【十】繪制地圖

Loading and parsing TOPOJSON 導入Topojson d3文件 地址:https://unpkg.com/topojson3.0.2/dist/topojson.min.js 想要找d3文件的話去unpkg.com好像大部分都能找到的樣子 Rendering geographic features 尋找合適的地圖數據:谷歌搜索world-atlas npm…

數據可視化【十一】樹狀圖

Constructing a node-link tree visualization 首先將節點之間的連線畫出來。 使用json函數讀取文件以后,使用hierarchy等函數得到連線的數組,然后綁定這個數組,給每個元素添加一個path,繪畫使用的是一個函數linkHorizontal&…

數據可視化【十二】 顏色圖例和尺寸圖例

有了前面的知識,制作一個圖例應該不是很難,關鍵是我們想要制作一個可以在其他地方進行使用的圖例,這樣就需要能夠動態地設置圖例的大小,位置,等等。 這里直接上代碼: colorLegend.js export const color…

數據可視化【十三】地區分布圖

在前面的博客中已經介紹了如何繪制地圖,這一節學習如何繪制地區分布圖。如果對繪制地圖還不熟悉的話可以了解一下之前我寫的博客:數據可視化【十】繪制地圖 Intergrating(整合) TopoJSON with tabular data(列表數據) 在前面的博客中沒有使用到tsv文件…

3.01【python正則表達式以及re模塊】

python正則表達式以及re模塊 元字符 正則表達式的語法就由表格中的元字符組成,一般用于搜索、替換、提取文本數據 元字符含義.匹配除換行符以外的任何單個字符*匹配前面的模式0次或1次匹配前面的模式1次或多次?匹配前面的模式0次或1次[]用于定義字符集&#xff…

Linux配置編程環境+云服務器上傳文件

Java環境配置 Ubuntu https://www.cnblogs.com/lfri/p/10437266.html Centos https://blog.csdn.net/qq_21077715/article/details/85536399 Tomcat配置 Centos https://blog.csdn.net/qq_21077715/article/details/85541685 https://www.cnblogs.com/newwind/p/9904561…

gbd + cgbd

gbd:傳送門 cgbd:傳送門 | 傳送門

數據可視化【十四】交互式過濾地區分布圖

在前面的博客中已經介紹了如何繪制地區分布圖,這一節學習如何繪制交互式過濾地區分布圖。如果對繪制地區分布圖還不熟悉的話可以了解一下之前我寫的博客:數據可視化【十三】地區分布圖 整體的框架仍然是在之前的基礎上進行修改,主要是添加交…

Ubuntu環境搭建

本文記錄了一些常用的Ubuntu軟件 然后首先修改軟件源:軟件和更新->Ubuntu軟件->下載自:其他站點(修改為阿里云) 在關閉的時候需要更新什么的 然后修改更新方式,將不支持的更新去掉 常用的Windows軟件 網易云…

1 兩數之和

雖然只是一道很簡單的題,但是也給我很多思考。 剛看到這道題的時候沒有仔細思考,直接寫了個排序和二分查找,想著對每個數字查找另一個數字會不會出現,復雜度是O(nlognnlogn)O(nlognnlogn)O(nlognnlogn),主要訓練了一下…

834 樹中距離之和

這道題我自己的想法只有對每個點都用一遍Dijkstra然后再求和,顯然會超時,所以我都沒有嘗試。 研究了一下題解,發現題解很巧妙,自己對樹的處理還是太稚嫩,之前樹鏈剖分學的都忘光了。 對于固定根節點的,我…

75 顏色分類

題目已經提示可以一遍掃描了但是我還是沒有想到,其實雙指針的想法我已經有了,但是一想到有問題就覺得無法實現。這也揭示了我思維上的問題:用一種方法解決問題遇到困難第一件事情不是想著如何攻克而是想著換一種方法。對自己的思維也不自信。…

141 環形鏈表

要求使用空間復雜度為O(1)的方法,可是我并沒有想到。我想到的只有用一個哈希表記錄一下所有訪問過的節點。 題解給出的空間復雜度為O(1)的方法是使用兩個指針,然后讓一個一次跑一步,一個一次跑兩步,如果跑的快的能追上跑的慢的就…

數據可視化【十五】

經驗法則:在顏色不相鄰的時候加上背景顏色顏色的個數為6~12比較好。 顏色其實很大程度上由背景決定而不是他本身決定。 D3 Scale-Chromatic 有許多顏色刻度,可以根據自己的需要進行選擇。 參考論文:Practical Rules for Using Color in Cha…

Ubuntu修改/刪除主目錄下的中文文件夾

在Ubuntu的主目錄下一般是有一些中文的目錄,例如桌面,視頻等等,還無法修改名稱,在一群英文文件夾里面顯得有些突兀(Ubuntu終端下的中文一點也不好看),就想把這些文件夾修改一下,結果…