d3中有沒有繪製重疊刻度標籤的方法?例如,如果我有條形圖,但條形寬度僅爲5個像素,標籤寬度爲10個像素,則最終會出現雜亂無章的混亂。我目前正在研究一個實現,只在不重疊的時候繪製標籤。我找不到任何現有的方法來做到這一點,但不知道是否有其他人處理過這個問題。d3自動空間重疊刻度標籤
7
A
回答
6
在D3中沒有辦法自動做到這一點。您可以明確設置刻度或刻度值(請參閱the documentation),但您必須自己計算出相應的數值/值。另一種選擇是旋轉標籤,以減少重疊的機會。
或者,像其他答案中的建議一樣,您可以嘗試使用強制佈局來放置標籤。爲了澄清,你只能在標籤上使用強制佈局 - 這完全獨立於圖表的類型。我在this example中這樣做了,這比在另一個答案中鏈接的那個稍有關聯。
請注意,如果您使用強制佈局解決方案,則不必爲標籤的位置設置動畫。您可以簡單地計算力佈局,直到它收斂,然後繪製標籤。
1
可以嘗試在this線程提到的某些東西,特別是this example從而使標籤被推上/下/出,使它們都可以安裝的方式,這需要使用一個單獨的力量,一個用於節點和另一個是標籤本身。
2
我有一個類似的問題,多個(子)軸,其中最後一個刻度重疊我的垂直軸在某些情況下(取決於屏幕寬度),所以我剛剛寫了一個小函數,比較文本標籤末尾的位置與下一個軸的位置。此代碼是非常具體的,以我的使用情況,但可以很容易地適應您的需求:與color: aqua
var $svg = $('#svg');
// get the last tick of each of my sub-axis
$('.tick-axis').find('.tick:last-of-type').each(function() {
// get position of the end of this text field
var endOfTextField = $(this).offset().left + $(this).find('text').width();
// get the next vertical axis
var $nextAxis = $('line[data-axis="' + $(this).closest('.tick-axis').attr('data-axis') + '"]');
// there is no axis on the very right, so just use the svg width
var positionOfAxis = ($nextAxis.length > 0) ? $nextAxis.offset().left : $svg.offset().left + $svg.width();
// hide the ugly ones!
if (endOfTextField > positionOfAxis) {
$(this).attr('class', 'tick hide');
}
});
蜱是隱藏的:
相關問題
- 1. jqPlot - 標籤和刻度文字重疊
- 2. D3線圖標籤重疊
- 3. D3 - X軸標籤重疊
- 4. D3中帶標籤的線性刻度
- 5. 在d3時間軸上顯示其他所有刻度標籤?
- 6. D3 - 將動態數據添加到刻度標籤
- 7. 重疊y軸刻度標籤和x軸在matplotlib
- 8. Matplotlib中的重複刻度標籤
- 9. 重複y軸刻度標籤
- 10. Python - 刪除軸刻度標籤,保留刻度和軸標籤
- 11. jqPlot自定義刻度標籤
- 12. 添加自定義刻度和標籤
- 13. 堆疊之前自舉標籤重疊
- 14. 移動刻度標籤JavaFx 2
- 15. d3.js錯誤的時間刻度
- 16. R,軸的刻度線和刻度標記之間變化距離標籤
- 17. 如何修改D3軸上的刻度和格式標籤?
- 18. 在線圖D3中的隱藏刻度線標籤
- 19. 如何在d3.js中顯示選定的刻度標籤
- 20. d3.js中的軸刻度標籤的樣式
- 21. Chart.js數據/標籤刻度
- 22. 格式軸刻度標籤
- 23. D3對數刻度標記爲10
- 24. 圓環圖與刻度標記線(D3)
- 25. NVD3 - lineWithFocusChart - 禁用x軸標籤/刻度的自動排序
- 26. dygraphs y2軸重疊y2刻度
- 27. 如何調整散焦軸上的刻度#(標籤在小數字上重疊)
- 28. D3.js時標刻度線 - 年只有幾個月 - 自定義時間格式
- 29. Chartjs:如何在刻度和刻度標籤之間創建填充
- 30. 旋轉緯度(y)刻度標籤 - cartopy
我不使用武力的佈局。我有條形圖。 –